5

私はMVC2に関する本を読んでいて、OutputCacheセクションに次のように記載されています。

警告前のセクション「承認フィルターが出力キャッシュとどのように相互作用するか」で、[承認]には、許可されていない訪問者が機密情報が既にキャッシュされているという理由だけで取得できないようにする特別な動作があることを説明しました。ただし、特に防止しない限り、キャッシュされた出力が、最初に生成されたユーザーとは異なる許可されたユーザーに配信される可能性があります。これを防ぐ1つの方法は、特定のコンテンツアイテムのアクセス制御を、アクションメソッドで承認ロジックをインラインで強制するのではなく、承認フィルター(AuthorizeAttributeから派生)として実装することです。これは、AuthorizeAttributeが出力キャッシュによってバイパスされないようにする方法を知っているためです。注意深くテストして、認証と出力キャッシュが期待どおりに相互作用していることを確認します。

これはMVC3でも当てはまりますか?

肯定的な場合、それを防ぐ方法は何ですか?(本の説明が曖昧すぎるため)。

よろしく。

4

1 に答える 1

5

私はそう思う。

OutPutCacheを使用してデータをキャッシュしている場合、これらのデータはグローバルにキャッシュされます。ユーザーが許可されている限り、ユーザーはキャッシュされたデータを取得します。

はい、outputcacheに「VaryByParam」オプションがありますが、渡されたさまざまなパラメーターごとに新しいキャッシュも作成されます。つまり、それはまだグローバルです。

したがって、ユーザーに基づいて異なるデータをキャッシュする場合、outputcacheは正しい方法ではない可能性があります。データがユーザー固有の場合、セッションが正しい選択です。それがセッションの目的です

于 2011-07-18T16:32:13.753 に答える