我正在用Java开发一个需要用户登录和注销的应用程序。我想阻止用户返回:
我已经看过StackOverflow上的一些问题,它们分别回答了这些问题,我不知道是否要为它们实现单独的过滤器?
另外,我应该使用会话检查或会话页面的非缓存吗?
有人可以提供此问题的代码示例吗?
谢谢
答案 0 :(得分:0)
post post技术后重定向可以防止在浏览器中返回。 请记住,这只是客户端浏览器的视觉效果,而不是安全功能,以避免用户返回安全页面!
答案 1 :(得分:0)
我最终使用了这段代码,似乎运作良好。
public class SessionFilter implements Filter {
/**
* Default constructor.
*/
public SessionFilter() {
}
/**
* @see Filter#destroy()
*/
public void destroy() {
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest hRequest = (HttpServletRequest) request;
HttpServletResponse hResponse = (HttpServletResponse) response;
HttpSession session = hRequest.getSession(false); // returns existing or
// null
if (session == null || session.getAttribute("user_email") == null) {
hResponse.sendRedirect(hRequest.getContextPath() + "/login.jsp");
// return;
} else {
hResponse.setHeader("Cache-Control",
"no-cache, no-store, must-revalidate"); // HTTP 1.1.
hResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hResponse.setDateHeader("Expires", 0);
chain.doFilter(request, response);
}
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}