2012-02-14 11 views
1

ユーザーがログアウトすると、すべての履歴とキャッシュをクリアします。ユーザーが後ろのページに行くことができないようにします。これらの目的のためにユーザーがASP.NETでログアウトしたときにすべての履歴を消去する方法は?

私はlogin.aspxのページで、次の使用を午前: -

if (Request.QueryString["action"] == "logout") 
     { 

      FormsAuthentication.SignOut(); 
      Session["CurrentUser"] = null; 
      Session["IsJobPoster"] = null; 
      Session["AdminEmail"] = null; 
      Session["IsAdmin"] = null; 
      Response.Buffer = true; 
      Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d); 
      Response.Expires = -1500; 
      Response.CacheControl = "no-cache"; 


    } 

しかし、ユーザーがログアウトした後にページをバックアップするために行くことができます。

使用可能なリンクまたはサンプルコードをお勧めします。

+0

hrm。通常は 'FormsAuthentication.SignOut()'がそれを行うべきです。物語にもっと多くのものが必要です。 –

+0

メンバーシップ・プロバイダーを使用しているかどうかわかりません。 もしそうなら、プロバイダはあなたのためにクッキーを削除し、ユーザーをログインページにリダイレクトします。ユーザーが戻ったら、ユーザーは再びログインページにリダイレクトする必要があります。 ASP.NET MVCでのフォーム認証の使用:http://msdn.microsoft.com/en-us/library/ff398049.aspx ASP.NET 2.0でのメンバーシップの使用http://msdn.microsoft.com/en-us/ライブラリ/ ff648345.aspx。 –

+0

クライアントのブラウザ履歴を消去することはできません。これは、Webブラウザによって制御され、Webページから迷惑をかけることはできません。 – Skuld

答えて

0

.Netについてはわかりませんが、通常はPOSTを使用し、適切な応答ヘッダーを使用してページを期限切れにし、HTTPリダイレクトを使用すると履歴が消去されます。さらに、セッションを維持するためにCookieが使用されている場合、クッキーをいくらかのゴミで上書きすることも役立ちます。

+0

クライアントの履歴を消去することはできません。これはブラウザによって制御されます。 – Skuld

+0

私は、ページが期限切れになるバックボタン履歴(-1)を意味しました。閲覧履歴全体ではありません。 –

+0

私が言ったように、javascript /の戻るボタンの履歴要素をWebページから削除することはできません。あなたがブラウザの履歴を削除/変更/閲覧することができれば、これがスパムサイトに与える虐待を考えてみてください。 – Skuld

0

私はあなたがクライアントサイドのキャッシュされたバージョンのページを見ていると思います。

if-statementの外側でキャッシュ呼び出し(Expires、CacheControl)を移動します。あなたは、ログインが必要なページがクライアント側にキャッシュされないように、リクエストごとにそれらを実行します。ブラウザは、履歴に戻るときに、ページが無効/古い/古いとリフレッシュする必要があることをユーザーに通知します。これにより、ユーザーをログインページにリダイレクトする新しい要求が開始されます。

1

また、代わりにSession.Abandon()を使用しない理由がありますか?これを考慮する必要があります。特に、より多くのセッション変数を取得すると、保守が容易になります。

+0

あなたはセッションについて正しいです、私はSession.Abandonを使用しています。しかし、私はまた、ユーザーのログアウト時にすべてのキャッシュヒストイをクリアしたい。クエリ文字列action = logoutを使用してログインページにリダイレクトします。 –

0

ログアウト後にユーザーが見ることができる前のページは、確かにクライアントにキャッシュされたページです。これらはブラウザにキャッシュされないように、ログインユーザーによって見られているページで

Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d); 
Response.Expires = -1500; 
Response.CacheControl = "no-cache"; 

:だから何あなたがしなければならないことはちょうど(あなたからコピーされた)このようなコードを記述しています。意味がありますか?

+0

私のコードで正しいことを教えてください。 –

+0

@Sushant、私はあなたのコードに問題があるとは思わない。問題はどこに*あなたのコードを置いたかです。そのコードをログアウトページに書き込む代わりに、認証が必要なページ(例:/ account/details、/ account/profileなど)に適用することができます。このコードをこれらのページに適用すると、ブラウザにキャッシュされないため、ユーザーが戻るボタンをクリックすると、ブラウザにキャッシュされたページがないため、ログインページにリダイレクトされます。 –

+0

つまり、ログアウト時にブラウザのキャッシュを消去しないでください。単純に、ブラウザに認証されたページをキャッシュさせないでください。 –

関連する問題