2012-04-26 5 views
1

でASP.Net(C#の)に私がログアウトした後に失われたセッションについてお聞きしたいと思いますクロム。これらのブラウザの両方で、[戻る]ボタンをクリックするとログアウトした後、ユーザーのアカウントに戻ります。 (ページロードで)セッションは、FirefoxとChrome

ログアウトページコード -

FormsAuthentication.SignOut(); 
Session.Abandon(); 
Session["CustomerId"] = null; 
FormsAuthentication.RedirectToLoginPage(); 
他のすべてのページで

またはWeb設定で

Response.Cache.SetCacheability(HttpCacheability.NoCache); 
if (Session["CustomerId"] == null) 
{ 
    Response.Redirect("~/Login.aspx"); 
} 

PAGE-マスター上の[ファイル] -

<authentication mode="Forms"> 
    <forms name="MyCookie" loginUrl="Login.aspx" protection="All" timeout="90" slidingExpiration="true"></forms> 
</authentication> 
+1

あなたはまだログインしていますか?戻るボタンをクリックすると、ブラウザは単にキャッシュされたページを返すことができます。 Ctrl + F5でページをリロードしようとすると、まだログインしていますか? – sirrocco

答えて

3

の場合あなたが押し戻しても、ユーザーがログアウトしていてもユーザー情報が表示されるのは、キャッシュブラウザを気にしないためですページがブラウザによってキャッシュされていないこと。あなたが設定する必要がありますが、ブラウザのキャッシュに滞在したくない全てのページへ

CurrentPage.Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-4)); 
CurrentPage.Response.Cache.SetValidUntilExpires(false); 
CurrentPage.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
CurrentPage.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
CurrentPage.Response.Cache.SetNoStore(); 
CurrentPage.Response.ExpiresAbsolute = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0)); 
CurrentPage.Response.Expires = 0; 
CurrentPage.Response.CacheControl = "no-cache"; 
CurrentPage.Response.AppendHeader("Pragma", "no-cache"); 
CurrentPage.Response.Cache.AppendCacheExtension("must-revalidate, proxy-revalidate, post-check=0, pre-check=0"); 

今、IEがデータを保持しない、そしてもう一方はそれらを保つことを理由があるため、セットアップであります各ブラウザが選択するか、または設定されています。ここでのポイントは、ブラウザのキャッシュにこのデータを保存しないようにするには、コントロールを用意して、ブラウザにデフォルト設定を使用させないことです。

また、HttpCacheability.NoCacheだけでは1つのブラウザで十分かもしれませんが、すべてでは十分ではありません。また、このページは道路上のプロキシによってキャッシュされる可能性があるため、SSLを使用する方が良いです。

1

Page_init()イベントでユーザーセッションを確認する必要があります。セッションが空の場合、ユーザーをログインページにリダイレクトします。あなたがログアウトしてから戻るボタンをクリックしようとすると、システムはユーザをそのユーザアカウントではなくログインページにリダイレクトします。

これは、ユーザーセッションを確認する必要があるイベントで、

protected void Page_init(object sender, EventArgs e) 
    { 
     if (Session["User"] == null) 
     { 
      Response.Redirect("Login.aspx"); 
     } 
    } 

が、これはあなたを助けることを願っています。 ありがとうございます。

0

また、セッションをajaxまたはiframeで有効にすることができます。
ここに簡単な例を示します:keep session alive with iframe

+0

もお尋ねしましたか?本気ですか ? – Aristos

関連する問題