使用其他PC访问应用程序时,FormsAuthentication.signout()不起作用

时间:2015-05-27 15:21:08

标签: asp.net logout global-asax formsauthentication formsauthenticationticket

我正在使用以下代码注销:

FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();

当我从我的电脑上访问我的应用程序时,上面的代码工作正常。但是如果我从连接在同一网络中的其他电脑上点击我的应用程序,cookie就不会被删除,应用程序也不会被注销。

1 个答案:

答案 0 :(得分:0)

用户仍然可以浏览您的网站,因为在您致电FormsAuthentication.SignOut()时不会清除Cookie,并且会在每次新请求时对其进行身份验证。在MS文档中说cookie将被清除,但它们没有,bug?与'Session.Abandon()', cookie完全相同仍然存在。

您应该将代码更改为:

    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);
  FormsAuthentication.RedirectToLoginPage();