我对 ASP.NET MVC 缓存和授权感到困惑,需要一些澄清。
我自己编写了一个授权属性,继承自
现在,对我来说难以理解的是:
如果
我自己编写了一个授权属性,继承自
AuthorizeAttribute
。即使我在控制器操作上设置了[OutputCache]
属性,它覆盖的AuthorizeCore
方法也会每次运行。我理解这一点。现在,对我来说难以理解的是:
AuthorizeCore
现在每次都会失败,而实际上页面已经从缓存中提供服务。原因是当请求被缓存时,作为AuthorizeCore
参数的httpContext.Session
变量却为null
!下面是一些简化代码:protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
如果
httpContext.Session
是null
,那么每次都会失败。但我需要访问session,否则我怎么检查请求是否经过授权?这没有任何意义 - 如果应该是这样的话,那么我在ASP.NET MVC中将永远无法同时使用缓存页面和身份验证。有没有帮助?