我正在使用以下代码注销:
FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();
当我从我的电脑访问我的应用程序时,上面的代码工作正常。但是如果我从连接在同一网络中的其他电脑上点击我的应用程序,cookie 不会被删除,应用程序也不会被注销。
我正在使用以下代码注销:
FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();
当我从我的电脑访问我的应用程序时,上面的代码工作正常。但是如果我从连接在同一网络中的其他电脑上点击我的应用程序,cookie 不会被删除,应用程序也不会被注销。
用户仍然可以浏览您的网站,因为在您致电时不会清除 cookie, FormsAuthentication.SignOut()
并且它们会在每次新请求时进行身份验证。在 MS 文档中说 cookie 将被清除,但它们不会,错误?'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();