在c#中注销不工作
我有下面的代码注销。当它退出时,但当按下back时,它不应该转到以前访问过的页面,但它确实转到了 //登录时在c#中注销不工作,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我有下面的代码注销。当它退出时,但当按下back时,它不应该转到以前访问过的页面,但它确实转到了 //登录时 if (txtPassword.Text == password) { Session["Login"] = true; Response.Redirect("AdminControlPanel.aspx"); } //注销时 Session[
if (txtPassword.Text == password)
{
Session["Login"] = true;
Response.Redirect("AdminControlPanel.aspx");
}
//注销时
Session["Login"] = false;
Session.Abandon();
FormsAuthentication.SignOut();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetAllowResponseInBrowserHistory(false);
Response.Redirect("~/index.aspx");
//正在检查adminpanel.aspx
if (!this.Page.IsPostBack)
{
if (this.Session["Login"]==null || (bool)this.Session["Login"]==false)
{
base.Response.Redirect("~/index.aspx");
}
}
这有什么问题?尝试设置
试着设定
为
会话
变量赋值时可能会出现问题
在if(txtPassword.Text==password)
中设置断点并检查
发生了什么
也
为
会话
变量赋值时可能会出现问题
在if(txtPassword.Text==password)
中设置断点并检查
发生了什么
也
在其上放置断点并检查会话[“登录”]的值。是否可能重复?你无法控制浏览器、浏览器之间的所有代理以及目前为止处理用户按下“后退”键的方式。这可能就是为什么这么多注销页面要求用户关闭浏览器窗口的原因。链中任何数量的中间人都可能会或不会正确遵守缓存控制,只要数据曾经在浏览器中查看过,它就可能在一个或多个缓存中,并且可以恢复。在其上放置断点并检查会话[“Login”]的值。是否可能重复?你无法控制浏览器、浏览器之间的所有代理以及目前为止处理用户按下“后退”键的方式。这可能就是为什么这么多注销页面要求用户关闭浏览器窗口的原因。只要数据曾经在浏览器中查看过,链中任何数量的中间人都可能会或不会正确遵守缓存控制,在此过程中,它可能位于一个或多个缓存中,并且可以恢复。您是否可以将代码放在您使用asp.net成员资格提供程序将值分配给会话的位置?您是否可以将代码放在您使用asp.net成员资格提供程序将值分配给会话的位置?
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetAllowResponseInBrowserHistory(false);
if (!this.Page.IsPostBack)
{
if (!string.IsNullOrEmpty((string) Session["Login"]))
{
var result = Convert.ToBoolean(Session["Login"]); //put a break point there also and check what values it getting
}
}