我在ASP.NET MVC缓存和授权,并澄清一些急需困惑。
我自制的授权属性继承自AuthorizeAttribute
。 其重写AuthorizeCore
方法运行每一次,即使我设置一个[OutputCache]
属性上的控制器的动作。 我理解的那部分。
现在对我来说,脑筋急转弯: AuthorizeCore
会当我实际上做输出缓存和页面从缓存中现在失败每次。 其原因是,当请求被高速缓存,该httpContext.Session
与供应AuthorizeCore
是null
!? 下面是一些简单的代码:
protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
所以,如果httpContext.Session
是null
,这显然没有忘记时间。 我需要,虽然访问会话,我还能怎么检查,如果请求被授权? 这没有任何意义-如果这是应该的话,我将永远无法与在ASP.NET MVC认证一起使用缓存的页面。 救命?