私は数日間、これで自分を苦労しました。 1)それは、例えば、ユーザの意志はまた彼のGmailや彼は現在 を認証されています、他のウェブサイトからログアウトします。つまり、すべての資格情報をフラッシュします。特定のIE「document.execCommand('ClearAuthenticationCache');
」を使用して
は、誰にとっても良いオプションではありません2)それはIEのみです;)
私はSession.Abandon()を使用してから、私のDefault.aspxにリダイレクトしようとしました。これだけでは十分ではありません。 作成した要求が許可されていないことをブラウザに明示的に伝える必要があります。あなたは、のようなものを使用してこれを行うことができます。これは、以下になります
response.StatusCode = 401;
response.Status = "401 Unauthorized";
response.AddHeader("WWW-Authenticate", "BASIC Realm=my application name");
resp.End();
:ユーザーが==>彼は、基本的なログイン画面を取得するログアウトボタンをクリックします。しかし、エスケープ(ログインダイアログが消える)を押してリフレッシュすると、ブラウザはログアウトしたと思うかもしれませんが、自動的に資格情報を再度送信してユーザーにログインさせます。
これを解決するためのトリックは、常にユニークな「領域」を吐き出すことです。上記の場合、ブラウザは資格情報を再送しません。私は現在の日時を吐き出すことを選んだ。
response.StatusCode = 401;
response.Status = "401 Unauthorized";
string realm = "my application name";
response.AddHeader("WWW-Authenticate", string.Format(@"BASIC Realm={0} ({1})", realm, DateTimeUtils.ConvertToUIDateTime(DateTime.Now)));
resp.End();
あなたがする必要があるもう一つは、ページをキャッシュしないように、ブラウザを教えてくれている:すべてのこれらの事で
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.MinValue);
Response.Cache.SetNoStore();
の代わりに、それは(私のために)動作しますIEのが、今までにユーザーが最初にエスケープ(基本的なログインダイアログを隠す)した後、リフレッシュ(F5)またはブラウザの戻るボタンを押したときに、firefoxがユーザーにログインするのを防ぐことができませんでした。
クリックするとまだ認証されています。 保護されたvoid logOut_Click(オブジェクト送信者、EventArgs e) { Session.Clear(); Session.Abandon(); ViewState.Clear(); FormsAuthentication.SignOut(); Response.Redirect( "http://www.google.org"); } – willyconnor