Autorisierung und ASP.NET MVC-Caching

Ich bin verwirrt über das Zwischenspeichern und die Autorisierung von ASP.NET MVC und muss dringend geklärt werden.

Mein selbst erstelltes Berechtigungsattribut erbt vonAuthorizeAttribute. Es wird überschriebenAuthorizeCore Methode läuft jedes Mal, auch wenn ich eine[OutputCache] Attribut für eine Controller-Aktion. Ich verstehe diesen Teil.

Jetzt ist der Verstand für mich bender:AuthorizeCore werdenScheitern Jedes Mal, wenn ich das Ausgabecaching tatsächlich durchführe und die Seite aus dem Cache bereitgestellt wird. Der Grund ist, dass beim Zwischenspeichern der Anforderung diehttpContext.Session geliefert mitAuthorizeCore istnull!? Hier ist ein vereinfachter Code:

protected override bool AuthorizeCore(HttpContextBase httpContext) {
    return (Session["userId"] != null)
}

Also wennhttpContext.Session istnullDies scheitert offensichtlich jedes Mal. Ich muss jedoch auf die Sitzung zugreifen. Wie kann ich sonst überprüfen, ob die Anforderung autorisiert ist? Das ergibt keinen Sinn - wenn es so sein sollte, würde ich es tunnoch nie in der Lage sein, zwischengespeicherte Seiten zusammen mit der Authentifizierung in ASP.NET MVC zu verwenden. Hilfe?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage