阻止ASP中的后退按钮功能

本文关键字:按钮 功能 ASP 阻止 | 更新日期: 2023-09-27 18:21:10

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

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

但是,如果按下后退按钮,我不知道这是否有效。即使用户使用了后退按钮,页面还会检查会话id并重定向用户吗?由于检查将在page_load上进行,因此我不确定如果我使用后退按钮,page_lead事件是否仍会运行

提前感谢您的回答。

阻止ASP中的后退按钮功能

是的,当用户按下浏览器中的Back按钮时,Page_Load事件将触发。因此,如果您在任何成员页面的Page_Load中放置了正确的会话检查逻辑,那么您应该是优秀的。这将考虑到用户注销从而终止其Session的情况,或者如果Session实际上因不活动而过期的情况。

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

<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();
}

,跟随它。

  • 注销后浏览器返回按钮问题

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

为了避免在注销后访问,请在清除会话后尝试转移到另一个特定的"您正在注销"页面。在"您正在注销"页面中,使用javascript window.location.replace返回您的登录页面。