Я запутался в кэшировании и авторизации 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. Помощь * * 1023