Autorización y ASP.NET MVC Caching
Estoy confundido con el caché y la autorización de ASP.NET MVC y necesito una aclaración.
Mi atributo de autorización hecho a sí mismo hereda deAuthorizeAttribute
. Está anuladoAuthorizeCore
El método se ejecuta cada vez, incluso si configuro un[OutputCache]
atributo en una acción de controlador. Entiendo esa parte.
Ahora la mente se dobla por mí:AuthorizeCore
seráfallar Ahora cada vez que realmente hago caché de salida y la página se sirve desde la memoria caché. La razón es que cuando la solicitud se almacena en caché, lahttpContext.Session
suministrado conAuthorizeCore
esnull
!? Aquí hay un código simplificado:
protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
Así que sihttpContext.Session
esnull
, esto obviamente falla cada vez. Sin embargo, debo acceder a la sesión. ¿De qué otra manera puedo verificar si la solicitud está autorizada? Esto no tiene ningún sentido, si así fuera como debería serNunca ser capaz de usar páginas en caché junto con la autenticación en ASP.NET MVC. ¿Ayuda?