0

我一直在寻找有关如何禁用或阻止后退按钮功能的解决方案,但是其中许多解决方案不适用于新浏览器或不是万无一失的。

我考虑过创建一个 sessionid 并在用户登录时将其提供给用户,并将其与登录时间一起存储到数据库中,并为其提供一个称为“活动”的状态。并且在注销时,数据库中的会话状态将更改为“非活动”。此检查将在我的所有会员页面中进行,如果用户的登录状态为“非活动”,他们将被重定向到登录页面。

但是我不知道如果按下后退按钮这是否会起作用。即使用户使用后退按钮,页面是否仍会检查会话 ID 并重定向用户?由于检查将在 page_load 上进行,我不确定如果我使用后退按钮 page_load 事件是否仍会运行

提前感谢您的任何答案。

4

3 回答 3

1

您是否甚至尝试过一些有效或无效的代码?
在客户端

<script type="text/javascript" language="javascript">
window.history.forward(1);
document.attachEvent("onkeydown", keydown_handler);
function keydown_handler()
{
switch (event.keyCode)
{
case 116 : // F5;
event.returnValue = false;
event.keyCode = 0;
window.status = "Disabled F5";
break;
}
}
</script>

关于背后的代码

protected void Page_Load(object sender, EventArgs e)
   {

     HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
     HttpContext.Current.Response.Cache.SetNoServerCaching();
     HttpContext.Current.Response.Cache.SetNoStore();   

   }

或者,

protected void Page_Load(object sender, EventArgs e)
{
   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
   Response.Cache.SetNoStore();
}

或者,跟着它..

于 2013-07-05T04:15:37.867 回答
1

是的,当用户按下浏览器中Page_Load的按钮时,该事件将触发。Back因此,如果您将正确的会话检查逻辑放在Page_Load任何成员页面中,那么您应该会很好。这将解释用户注销的情况,从而杀死他们Session,或者Session实际上是否因不活动而过期。

于 2013-07-05T03:39:05.910 回答
0

不要这样做。尝试禁用后退按钮或任何浏览器功能并不是最佳做法。

为了避免注销后访问,请在清除会话后尝试转移到另一个特定的“您正在注销”页面。在那个“您正在注销”页面中,执行 javascriptwindow.location.replace返回您的登录页面。

于 2013-07-05T06:20:03.320 回答