我有一个servlet和一个HTML页面.如何在注销后阻止用户点击浏览器的后退按钮?我在stackoverflow中读过相同的问题,但答案是使用浏览器历史记录禁用java脚本或使用页面 - 在http标头中没有缓存.我们如何使用阻止返回操作的servlet来实现它,http-header没有缓存是无用的,因为Firefox表示页面已经过期,当它再次刷新两次显示安全页面时.
我已经完成了一个方法,示例方法只是为了尝试(不是真实的)我的用户名和密码从HTML页面发布到servlet,如果密码和用户名是正确的,servlet将其存储在会话中.再次请求安全页面时,如果会话存在,则显示安全页面,并且用户从登录页面显示的会话中注销所有正在工作的ID,除非用户点击浏览器的后退按钮时注销失败.
如何防止安全servlet在注销后显示内容,然后在浏览器中按下后退按钮?
welcome.html的src
<html>
<body>
<form method="POST" action="Sessionexample">
<div align="center">
<table border="1" style="border-collapse: collapse">
<tr>
<td>Username</td>
<td><input type="text" name="username" size="20"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="text" name="password" size="20"></td>
</tr>
<tr>
<td height="24"> </td>
<td height="24"> </td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Submit" name="B1"></td>
</tr>
</table>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
servlet的src
public class Sessionexample extends HttpServlet implements Servlet , Filter {
private static final long serialVersionUID = 1L;
public String username =null, password=null;
public HttpSession session ;
public PrintWriter pw;
int …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Struts 2项目.当用户单击logout按钮时,logout操作将使用清除会话session.clear().但是当用户back在注销后单击浏览器中的按钮时,它仍会显示上一页内容.如果back在注销后在浏览器中单击了按钮,我想将用户重定向到登录页面.
在我的注销行动中我还有什么要清楚解决这个问题吗?任何帮助将不胜感激.
客户要求在尝试使用浏览器的导航按钮进行导航时,必须强制注销站点的用户(登录并能够查看其个人信息时).
在SO上搜索似乎表明,人们遇到的大多数问题是"阻止"人们在退出时点击浏览器的后退按钮,就像这样和这样.不同之处在于我需要"停止"用户在历史记录中向后导航(甚至是向前导航,但我不知道如果用户不能首先返回,他们将如何在历史中前进)即使他们登录,也必须使用提供的导航.
我正在考虑在用户点击后退按钮然后将其记录下来捕获浏览器的事件.但是,正如这里所讨论的那样,您似乎只能使用Javascript"执行此操作"而不使用服务器端代码.我对这种方法的质疑是,用户只需在浏览器上禁用Javascript就可以绕过它.
所以我的问题是 - 有没有办法在服务器端捕获浏览器事件并将其记录在那里?如果没有,实现目标的替代方案是什么?
我正在研究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)欢迎页面上的原因,他会保持相同的"显示用户详细信息" 页面.
如果会话有效,我希望用户应该能够使用浏览器后退按钮.如果会话无效,他应该无法使用浏览器后退按钮.
我知道很多其他线程似乎都回答了这个问题,但我找不到使用GlassF 3.0.1的JSF 2.0解决用户问题的解决方案.我尝试使用基本身份验证和使用j_security_check作为操作的FORM身份验证.但是对于注销方法,我找不到任何有效的方法.
我尝试使用带有session.invalidate()的servlet,我使用了托管bean来使会话失效,但什么也没发生.我也试过j_security_logout但没有成功.
有人知道我可以为注销用户做些什么吗?
我有一个带有表单的 JSP 页面,您可以在其中填写某些详细信息。在提交表单时,我调用一个 servlet,然后更新数据库中的详细信息,然后我重定向到一个页面,我向用户显示一条确认消息。
我在这里遇到的问题是,当用户单击返回时,他会再次转到表单页面,如果他单击提交按钮,则会在数据库中创建一个新记录。
考虑这类似于购物车示例,在这种情况下,他将购买同一件商品两次。但这里唯一的问题是我无法在后端处理这个问题,即数据库永远不会知道正在发生冗余操作。我需要从客户端处理这个。有点奇怪,但我必须这样做。
基本上,当用户单击后退按钮时,我不希望他能够转到表单页面,而可能只是转到其他页面。
我有30个jsp页面登录和注销.我已将所有页面放在Session中,以便只有有效的用户才能访问.现在的问题是,每当用户点击注销时,会话就会失效,但如果用户按下浏览器的后退按钮,它仍会显示安全页面(不应显示).
我知道问题在于浏览器保存缓存和历史记录.所以我response.setheader("cache-control",.....)在安全页面上以及在安全页面中应用了等等window.history.go(+1).
它在某种程度上工作正常,但偶尔会显示安全页面.而且,一旦用户登录会话开始并且他将进入网站,后退按钮应该没有任何麻烦(没有提示用户重新发送表单数据).一旦他退出会话应该结束,他不应该通过按回按钮来访问页面.有没有办法实现这个目标?
可能重复:
注销后阻止用户返回上一个安全页面
我需要通过阻止用户在注销后访问它来保护java应用程序(mvc).
目的:
1.注销后,用户不能使用浏览器后退按钮访问受限页面.2.注销后,用户不能访问浏览器历史记录中的任何受限制的URL
谷歌搜索后,我明白禁用浏览器后退按钮不是一个好习惯.那么我怎样才能在JSP中达到最佳效果?
谢谢和问候Ashish
我正在使用JSF 2.0开发Web应用程序,并且我开发了一个导航面板,用户必须使用该面板来浏览页面.小组讨好了.但与此同时我不希望用户使用浏览器的"后退","前进"进行导航.我的想法是,如果用户点击任何一个按钮,我将使会话无效并向他显示一个信息页面.不知道如何在JSF 2.0中实现这一点,JavaScript是一个选项,但我想知道JSF是否有任何API支持这个???