2011-08-15 13 views
1

私のASP.NETサイトでは、ユーザーがログアウトをクリックすると、FormsAuthentication.SignOutとSession.Abandonを呼び出し、それらをログインページにリダイレクトします。これは正常に動作します。フォーム認証 - ログアウトとページ履歴

しかし、ブラウザで「戻る」をクリックすると、ログアウトがクリックされる前に最後に表示されたページが表示されます。何かをクリックすると、期待どおりにログオンページに戻されます。

ログアウトしたページを有効期限切れにして、ユーザーがクリックしても表示されないようにしますか?

答えて

1

防止の資格とコンテンツのキャッシング:

まず、フォームCookieが作成されていないことを確認しスティッキー:

FormsAuthentication.SetAuthCookie(userName, false); 

次に、キャッシュからページ要求を防ぐために、Global.asaxの中に少し何か:

public override void Init() 
{ 
    base.Init(); 

    BeginRequest += new EventHandler(OnBeginRequest); 
} 

void OnBeginRequest(object sender, EventArgs e) 
{ 
    if (!(Request.Path.EndsWith("Resource.axd"))) 
    { 
     Response.Cache.SetExpires(DateTime.UtcNow.AddSeconds(-1)); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Cache.SetNoStore(); 
    } 
} 

上記の2つのアプローチの組み合わせは、私が取り組んだいくつかのアプリで同様の問題を修正しました。意図的に.axdファイルのキャッシュを許可することで、パフォーマンスの影響を最小限に抑えることができます。バックグラウンドでaxd要求を生成する第三者のコントロールを頻繁に使用しています。