我对 HTTPS 和 HTTP 有疑问。似乎我的过滤器属性正在被缓存。当我登录时,它应该不会自动向 https 发送任何 http 页面,它确实如此。然后,当我注销时,它会停留在 https 上,这很好,但是如果我尝试手动转到非 http 页面,即使我已登录,它也会再次重定向到 https 页面。RequireSecure 始终为真,因为我的日志信息说明了它是。FilterAttributes 是否被缓存,如果是,我该如何解决?
public class RequireHttpsAttribute : System.Web.Mvc.RequireHttpsAttribute
{
protected static readonly NLogLogger Logger = new NLogLogger();
public bool Ignore = false;
public bool RequireSecure = false;
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
{
Logger.Info("Require HTTPS User Authenticated");
RequireSecure = true;
}
if (filterContext.RequestContext.HttpContext.Request.IsLocal)
RequireSecure = false;
if (RequireSecure)
{
Logger.Info("Require HTTPS");
base.OnAuthorization(filterContext);
}
}
}
}