我有一个需要用户名和密码的应用程序。当用户单击注销按钮时,它会运行:
private void LogOut()
{
Session["SessionName"] = null;
Session.Remove("SessionName");
System.Web.Security.FormsAuthentication.SignOut();
Response.Cookies.Remove("AuthCookie");
HttpCookie c = new HttpCookie("AuthCookie");
c.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(c);
Session.Clear();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
Response.Cache.SetNoStore();
Response.Cache.SetNoServerCaching();
Session.Abandon();
Response.Redirect("~/user/login.aspx");
}
问题是当我测试安全性时。当我转到一个页面来更改数据库中的数据时,我可以使用Fiddler来“记录”这个请求。 退出应用程序后,我仍然可以在 Fiddler 中重放这个请求,就像我仍然登录一样。事实上,当我在代码中放置中断时,我仍然可以看到所有 cookie 和会话信息。只有在会话到期(从超时)之后,实际的会话才会消失。
为什么我在 cookie 过期并放弃会话后仍然可以看到这些信息?当用户单击注销按钮时,如何完全清除 cookie 和会话信息?