asp.net - 登录会话没有被取消
问题描述
我有一个登录页面,在此页面中,成功验证用户身份时分配了一个登录会话,并且该会话正在整个项目的所有页面中使用。在所有页面中,我都提出了一个条件
If(Session["login"]) == null)
Response.Redirect("login.aspx");
此外,我还在注销时取消会话。但是,此代码不起作用。单击返回按钮后,应用程序将再次登录。
请任何人都可以帮助我。
解决方案
在每个页面的页面加载时添加这个。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["login"] == null)
Response.Redirect("Login.aspx");
else
{
Response.ClearHeaders();
Response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
Response.AddHeader("Pragma", "no-cache");
}
}
}
有关更多详细信息,请访问链接在 ASP.Net 中注销时禁用浏览器的后退按钮功能
在注销按钮上单击添加此
protected void btnLogout_Click(object sender, EventArgs e)
{
Session.Abandon();
Session["login"] = null;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
Response.Expires = -1000;
Response.CacheControl = "no-cache";
Response.Redirect("Login.aspx", true);
}
推荐阅读
- python - Python从许多文件中添加数字而不使用太多内存
- c++ - 类对象属性可以调用返回属性在 C++ 中应具有的值的方法吗?
- javascript - 在 Javascript 和 Express 中从前到后发送数据
- python - 不存在的行上的 Python 期望缩进
- c# - 在数据网格中编辑和保存数据
- python - Python:如何使用flask api部署对象检测模型
- huawei-mobile-services - HUAWEI Analytics Kit是否支持上报失败的数据自动重发?
- rust - 从 char 迭代器添加路径组件而不首先收集它的惯用方法是什么?
- java - 我已经使用 StringBuilder 类在 java 中编写了回文代码,但它不起作用?
- r - 如何根据另一列的数值为新列分配数值