私はASP.NET MVCのキャッシングと承認に混乱しています。承認とASP.NET MVCのキャッシング
私自身の許可属性はAuthorizeAttribute
から継承されています。コントローラーアクションに[OutputCache]
属性を設定しても、オーバーライドされたAuthorizeCore
メソッドが毎回実行されます。私はその部分を理解しています。
私にとって心のベンダー:AuthorizeCore
はになります。今度は実際に出力キャッシュを行い、キャッシュからページが提供される度に。その理由は、要求がキャッシュされるとき、AuthorizeCore
で提供されるhttpContext.Session
はnull
です。ここではいくつかの単純化されたコードです:
protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
だからhttpContext.Session
がnull
であれば、これは明らかに毎回失敗します。セッションにアクセスする必要があります。要求が承認されていれば、どうすれば確認できますか?これは意味をなさない - もしこれがどうすればいいのですか?は、ASP.NET MVCの認証と一緒にキャッシュされたページを使うことはできません。助けて?
通常のasp.netメンバーシップ・プロバイダに基づいてカスタム・メンバーシップ・プロバイダを使用するのであれば、キャッシュでユーザー認証をチェックできますか?それがなぜ機能するのですか?メンバーシッププロバイダは内部的にはセッションも必要ですか? – Alex
セキュリティセンシティブ情報をSessionに完全に格納することは決して安全ではありません。 –
そして、正規のメンバーシッププロバイダは、Sessionとはまったく関係ありません。私の答えの最後の2つのリンクを読んでください。 –