我忙于一个只有一个页面的网站,只有在登录后才能访问:home.jsp
。一旦用户使用有效会话登录,如果他按下浏览器上的后退按钮,则应该将其重定向到login.jsp
并再次按下浏览器的前进按钮。如果没有登录,他就无法前往home.jsp
。所以在做了一些搜索之后,我已经实施了:
<%
response.setHeader ( "Cache-Control","no-cache,no-store,must-revalidate");
response.setHeader("Pragma","no-cache");
response.setDateHeader ( "Expires", 0)
%>
在home.jsp
页面上,按下前进按钮后,表示网页已过期,但我正在寻找的是我的cutom页面,类似sessionExpired.jsp
说再次登录..
请帮我解决这个问题。
答案 0 :(得分:1)
实施Post-Redirect-Get模式。因此,每当最终用户发送(成功)POST请求时,都会向目标页面发送重定向。这样,后退按钮将指向重定向的GET请求而不是POST请求(显然已经过期,因为您指示浏览器不对其进行缓存)。
E.g。在处理登录的doPost()
方法中:
User user = userService.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
response.sendRedirect("nextpage.jsp"); // Here, you need to send a redirect to landing page after login.
}