我已经找到了关于如何禁用或阻止后退按钮功能的解决方案,但是这些解决方案中的许多不适用于新浏览器或者不是万无一失的。
我考虑创建一个sessionid,并在用户登录时将其提供给用户,并将其与登录时间一起存储到数据库中,并为其提供一个名为“active”的状态。在注销时,数据库中的会话状态将更改为“非活动”。此检查将在我的所有成员页面中进行,如果用户的登录状态为“非活动”,则会将其重定向到登录页面。
但是,如果按下后退按钮,我不知道这是否有效。页面是否仍会检查会话ID并重定向用户,即使他使用了后退按钮?由于检查将在page_load上进行,我不确定如果我使用后退按钮,page_load事件是否仍会运行
提前感谢您的任何答案。
答案 0 :(得分:1)
是的,当用户按下浏览器中的Page_Load
按钮时,Back
事件将会触发。因此,如果您在任何成员页面的Page_Load
中放置了正确的会话检查逻辑,那么您应该是好的。这将解释用户注销的情况,从而导致他们Session
或Session
实际上因不活动而失效。
答案 1 :(得分: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();
}
或,关注它..
答案 2 :(得分:0)
不要这样做。尝试禁用后退按钮或任何浏览器功能并不是最佳做法。
为了在注销后避免访问,请在清除会话后尝试转移到另一个特定的“您正在注销”页面。在“您正在退出”页面中,将javascript window.location.replace
返回到您的登录页面。