【发布时间】:2009-09-17 23:14:57
【问题描述】:
我对 ASP.NET MVC 缓存和授权感到困惑,急需澄清一下。
我的自制授权属性继承自AuthorizeAttribute。它被覆盖的AuthorizeCore 方法每次都会运行,即使我在控制器操作上设置了[OutputCache] 属性。我明白那部分。
现在让我费解了:AuthorizeCore 将失败 每次我实际执行输出缓存并且页面是从缓存中提供的。原因是当请求被缓存时,AuthorizeCore 提供的httpContext.Session 是null!?下面是一些简化的代码:
protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
所以如果httpContext.Session 是null,这显然每次都会失败。我需要访问会话,我还能如何检查请求是否被授权?这没有任何意义 - 如果它应该是这样,那么我将 永远 能够在 ASP.NET MVC 中将缓存页面与身份验证一起使用。帮忙?
【问题讨论】:
标签: c# asp.net-mvc session authorize asp.net-caching