C# 为安全起见,在注销时禁用浏览器的后退按钮,如Yahoo、Gmail等

C# 为安全起见,在注销时禁用浏览器的后退按钮,如Yahoo、Gmail等,c#,asp.net,C#,Asp.net,首先,我在globle.asax文件中将session变量设置为session[“SessionId”],如下所示:- void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started string sessionId = Session.SessionID; Session["SessionId"] = "true"; } 我在母版页的page_loa

首先,我在globle.asax文件中将session变量设置为session[“SessionId”],如下所示:-

void Session_Start(object sender, EventArgs e) 
{
  // Code that runs when a new session is started
  string sessionId = Session.SessionID;
  Session["SessionId"] = "true";
}
我在母版页的page_load()事件中使用此代码:-

Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
Response.Expires = -1500;
Response.CacheControl = "no-cache";

if(Session["SessionId"] == null)
{
  Response.Redirect("PatientLoginPage.aspx");
}
使用Firefox作为我的默认浏览器,但它不工作,以及Chrome浏览器纠正我,如果我错了,请帮助我

提前感谢,


vaibhav D.

如果我没弄错的话,Gmail和Yahoo在注销时使用了两个重定向,因此当你点击“后退”时,你实际上会返回一个虚假页面,而不是你注销前的页面。 试着去做同样的事情

此外,使用的重定向类型可能会影响浏览器历史记录,也可能不会(我在这里引用重定向是从http头重定向还是从简单的javascript重定向)


试着用这些信息和一个虚假的“代理”页面做一个小实验,这个页面在“登录”模式和“注销”模式之间起着中间作用。如果我没弄错的话,Gmail和Yahoo在注销时使用了2个重定向,所以当你点击“返回”时,你实际上会返回到一个虚假页面,而不是你注销前的页面。 试着去做同样的事情

此外,使用的重定向类型可能会影响浏览器历史记录,也可能不会(我在这里引用重定向是从http头重定向还是从简单的javascript重定向)


试着用这些信息和一个虚假的“代理”页面做一个小实验,该页面充当“登录”模式和“注销”模式之间的中间层,每次会话启动时都会调用Session\u Start,因此即使您在注销代码中调用Session.about(),只要用户点击一个新页面,Session_Start将被触发(因为它看起来像一个新会话),Session[“SessionId”]将不再为null,并将再次设置回“true”


关于如何“禁用”后退按钮,我认为答案是正确的,但这应该有助于解决母版页中的问题。

每次会话启动时都会调用Session\u Start-因此,即使您在注销代码中调用Session.adjust(),只要用户点击新页面,Session\u Start也会被触发(因为它看起来像一个新会话),而会话[“SessionId”]将不再为空,并将再次设置回“true”


我认为关于如何“禁用”后退按钮,我有正确的答案,但这应该有助于解决母版页中的问题。

你能更具体一点吗?请告诉我我的代码中有什么错误?@Vaibhavd:基本上,当你的应用程序注销用户时,你应该将用户重定向到(例如)loggedout.aspx-该页面只会将他们重定向到一个页面,通知他们已注销,或登录页面,或主页。这样,如果用户单击“上一步”按钮,他们会转到loggedout.aspx,该按钮会立即将他们再次跳转到同一页面。但是,如果用户单击超过2次,他们可以浏览整个页面?你能告诉我我的代码中的错误吗?浏览器从浏览器捕获中获取的页面,因此页面没有重新加载它只是从捕获中调用,我清除了捕获使用的代码,它在IE中工作正常,但在Firefox中不工作,我想在浏览器返回按钮上编码,以便在单击它后弹出消息并显示y我们的会话已过期,将重新返回到同一页面(登录页面)。您不能禁用“后退”按钮,这就是为什么您必须使用2个页面和“无缓存”指令。您确定浏览器收到正确的标题,并且不缓存“注销”所在的页面吗按钮被按下?你能更具体一点吗?请告诉我我的代码中有什么错误?@Vaibhavd:基本上,当你的应用程序注销用户时,你应该将用户重定向到(例如)loggedout.aspx-该页面只会将他们重定向到一个页面,通知他们已注销,或登录页面,或主页。这样,如果用户单击“上一步”按钮,他们会转到loggedout.aspx,该按钮会立即将他们再次跳转到同一页面。但是,如果用户单击超过2次,他们可以浏览整个页面?你能告诉我我的代码中的错误吗?浏览器从浏览器捕获中获取的页面,因此页面没有重新加载它只是从捕获中调用,我清除了捕获使用的代码,它在IE中工作正常,但在Firefox中不工作,我想在浏览器返回按钮上编码,以便在单击它后弹出消息并显示y我们的会话已过期,将重新返回到同一页面(登录页面)。您不能禁用“后退”按钮,这就是为什么您必须使用2个页面和“无缓存”指令。您确定浏览器收到正确的标题,并且不缓存“注销”所在的页面吗按钮被按下?你能告诉我我的代码中的错误吗?浏览器从浏览器捕获中获取的页面,因此页面没有重新加载它只是调用捕获,我清除了捕获,它使用的代码与IE中的代码相同,但在Firefox中没有,我想在浏览器返回按钮上编码,以便在单击它后弹出消息ng您的会话已过期,将重新发送到同一页面(登录页面)你能告诉我我的代码中的错误吗浏览器从浏览器捕获中获取的页面,因此页面没有重新加载它只是从捕获中调用,我清除了使用相同代码的捕获它在IE中工作正常,但在Firefox中不工作,我想在浏览器返回按钮上编码,以便在单击它后弹出消息应用程序,说明您的会话已完成已过期,将重新登录到同一页面(登录页面)