2017-02-23 34 views
0

ASP.NET MVCでログアウトした後、すべてのブラウザで戻るボタンをクリックしないようにしようとしています。これは既知の問題ですが、私が見つけたすべての解決策では、「キャッシュなし」で「キャッシュ制御」を設定してキャッシュを無効にすることを提案しています。私はシステムが比較的大きく、このキャッシュが必要なのでキャッシュを無効にしたくない。キャッシュを有効にしてasp.net mvcでログアウトした後、戻るボタンをクリックするのを防ぐ方法

答えて

0

これは完全な答えではありませんが、このJQueryを使用して戻るボタンをキャッチし、前のビューから改ページした状態を再開します。許可とリダイレクトの検証にこれを使用することができます。

if (window.history && window.history.pushState) { 

    window.history.pushState('forward', null, ''); 

    $(window).on('popstate', function() { 
     window.location.replace("/" + returnURL); 
    }); 
} 
1

最終的には、ユーザーが戻るボタンを使用するのを防ぐことはできません。 を試してください。がありますが、その周りには方法があり、ユーザーの設定に基づいてブラウザがそれを許可する可能性があります。それにもかかわらず、それはユーザーを怒らせる優れた方法です。

これには2つの側面があります。まず、ブラウザ固有の「キャッシュ」があります。ここでは引用符を使用しています。これは、従来のブラウザのリソースのキャッシュについて話しているわけではないためです。例として、Chromeは以前レンダリングされたページをメモリに保持することが多いため、技術的にリクエストを発行しているわけではありません。単に以前にレンダリングされたページを読み込むだけです。あなたは何もすることができないでしょう。問題は、ユーザーが前のページまたはそれに類するフォームを偽造防止トークンで解決できるフォームを提出できる可能性がある場合です。

第2に、ユーザー固有の情報をサーバー側でキャッシュするという問題があります。認証されたページでOutputCacheを使用している場合は、VaryByCustomを使用して、カスタム文字列の一部としてユーザーの識別情報(IDなど)を戻す必要があります。その後、ユーザーがログアウトすると、キャッシュされたコピーを取得することができなくなります。なぜなら、キャッシュされたコピーはもはやそれらに属していないからです。しかし実際には、認証されたページがにログインした複数のユーザーの間で共有されないようにすることが重要です。認証されたページをキャッシュし、ユーザーによって変化しない場合は、間違ったユーザーに個人情報を提供する可能性があります。

解決策は、バックボタンをブロックすることではありませんが、これは絶対に安全ではありません。解決策は、アプリケーションを適切に設計して、ユーザーが戻っても問題にならないようにすることです。

関連する問題