4

にフィルタを許可:以前のセクションでOutputCacheと私はMVC2についての本を読んでいます、そしてOutputCacheセクションで、それは述べてMVC3

警告「認可出力キャッシュと対話 をフィルタする方法、」私はと説明を[Authorize]には、 という特殊な情報があり、許可されていない訪問者は、すでにキャッシュされているという理由だけで機密情報を得ることができません。 ただし、 が特にそれを防止しない限り、キャッシュされた出力は が最初に生成されたものとは異なる別の許可ユーザーに配送される可能性があります。それを防ぐために一つの方法は、AuthorizeAttributeがあることを回避する方法を知っているので、 を(AuthorizeAttribute由来) 承認フィルターなどの特定のコンテンツアイテムのためのあなたのアクセス制御を実装する代わりに の単純アクションメソッドで承認ロジックをインラインで強制 になりますキャッシングは出力 によってバイパスされます。許可と出力のキャッシュが期待どおりに相互作用していることを確認するために、慎重にテストしてください。

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

肯定的であれば、それを防ぐ方法は何ですか? (本の説明があまりにも漠然としているので)。

よろしくお願いいたします。

答えて

4

だと思います。

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

はい、私たちはoutputcacheの "VaryByParam"オプションを持っていますが、渡されたすべての異なるパラメータに対して新しいキャッシュも作成します。それはまだそれが世界的に存在することを意味します。

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

+0

偉大な、私はとにかく恩恵を開始するつもりだと、多分私はより多くの説明をキャッチすることができます:Dは100万ドルありがとう。 – vtortola

+0

"OutputCacheAttribute.VaryByHeader = Cookie"を使用すると、認証の面で安全ですか?私がキャッシュしたいのは、レンダリングされたページです。なぜなら、それらのページの一部が大きく、生成ロジックがたくさんあるからです。 – vtortola

+0

オプションです。情報が重要な場合は、クライアント側に保存されているクッキーに依存しないようにすることができます。 – fengd

関連する問題