如果会话无效,则禁用浏览器后退按钮

lea*_*ner 3 html javascript jsp back-button

我正在研究JSP.我知道有很多关于这个主题的帖子,但没有什么对我有用.我有一个登录页面,通向欢迎页面.当用户单击注销时会话无效,然后重定向到登录页面.但是,如果用户单击浏览器后退按钮,他将再次进入欢迎页面,但如果他按下任何其他按钮或刷新页面,他将被带到登录页面,因为会话已过期.但是我不希望用户在注销后通过单击浏览器后退按钮来访问欢迎页面.我尝试使用以下内容:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我试过用:

window.history.forward(1);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它导致另一个问题.如果用户登录并进入欢迎页面.然后用户按下按钮,让我们说"显示用户详细信息",然后用户进入"显示用户详细信息"页面.现在,如果用户单击后退按钮返回欢迎页面.由于window.history.forward(1)欢迎页面上的原因,他会保持相同的"显示用户详细信息" 页面.

如果会话有效,我希望用户应该能够使用浏览器后退按钮.如果会话无效,他应该无法使用浏览器后退按钮.

San*_*ish 7

您可以在注销页面上禁用后退按钮.这样用户一旦点击退出就无法返回.将此脚本添加到页面中

<SCRIPT type="text/javascript">
    window.history.forward();
    function noBack() { window.history.forward(); }
</SCRIPT>
Run Code Online (Sandbox Code Playgroud)

还有你的jsp,

   <BODY onload="noBack();"
    onpageshow="if (event.persisted) noBack();" onunload="">
Run Code Online (Sandbox Code Playgroud)

另一个建议是,如果会话过期,请不要盲目地将用户重定向到登录页面.只需在您的注销页面中有一个登录链接

希望这可以帮助 !!


lea*_*ner 5

这是完美的工作。我使用以下内容清除缓存。我正在使 logout.jsp 中的会话无效,单击时,它会检查某些令牌属性(在用户登录时设置),如果找不到,则重定向到登录页面。

<%

response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
    if(session.getAttribute("token")==null){
    response.sendRedirect(request.getContextPath() + "/LogOut.jsp");

}
%>
Run Code Online (Sandbox Code Playgroud)

还是)感谢你的建议。我一定会付诸行动。每一个帮助和建议表示赞赏。