我遇到了asp.net web應用程序和Chrome的問題。當我關閉我的Chrome瀏覽器窗口時,它不會清除cookie。這意味着如果我使用表單身份驗證登錄到我的Web應用程序,然後關閉並重新打開瀏覽器窗口,則表明我仍然登錄!確保瀏覽器上的表單認證註銷關閉
我讀到,這可能是一個Chrome的錯誤,但必須有一些解決方法。
我發現this後,想從它運行下面的代碼時關閉瀏覽器窗口:
FormsAuthentication.SignOut();
Session.Abandon();
// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie1);
// clear session cookie (not necessary for your current problem but i would recommend you do it anyway)
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);
我的問題是,是否有一個瀏覽器關閉的事件處理程序,我可以在某處指定我碼? Global.aspx文件中可能爲Application_End
?或者那不是它的意思?
或者有另一種方法可以解決這個問題嗎?
謝謝。
這裏是我的代碼如下所示:
private void Login_Click(Object sender, EventArgs e)
{
// Create a custom FormsAuthenticationTicket containing
// application specific data for the user.
string username = UserNameTextBox.Text;
string password = UserPassTextBox.Text;
bool isPersistent = false;
if (Membership.ValidateUser(username, password))
{
string userData = "ApplicationSpecific data for this user.";
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
isPersistent,
userData,
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
// Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
// Redirect back to original URL.
Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent));
}
else
{
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
}
只有其checkbox.Checked
的值,它是false
默認更換isPersistent
。
編輯:
另一個惱人的事情是可能去的是什麼,從[這裏]鏈接,最多的回答說:
這也是很重要的,你使用的瀏覽器。 Chrome有能力在後臺運行,並保持會話Cookie,直到它們的超時被觸發 - 當瀏覽器關閉時我不會丟棄它們(我發現這很困難)。
不要使用持久性cookie? – MikeSmithDev 2014-09-21 15:54:18
嗯,如果有人點擊我的「記住我」複選框,我希望能夠使用它。我設置了'FormsAuthentication.GetRedirectUrl(txtboxUserName.Text,CheckBoxRememberMe.Checked)'我不應該那樣做嗎?儘管'CheckBoxRememberMe.Checked'爲'false' – Micro 2014-09-21 23:56:11
如果您不希望它們在瀏覽器中保持登錄狀態,請不要使用持久cookie。並取消複選框。 – MikeSmithDev 2014-09-21 23:58:12