有人可以帮我解决这个问题吗?
以下是Filter
的实现@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filter) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
if (session.getAttribute("sessionUser") != null
|| req.getRequestURI().endsWith("Login.xhtml")) {
System.out.println("if");
filter.doFilter(request, response);
} else {
System.out.println("else");
HttpServletResponse res = (HttpServletResponse) response;
res.sendRedirect(req.getContextPath()+"/Login.xhtml");
}
}
答案 0 :(得分:0)
在回答之前,我建议您使用一个安全框架来控制页面的访问。像春天安全一样强大的东西。
但是在这种情况下,您只检查了用户会话是否已经过验证,但没有任何与页面或页面名称相关的内容添加到会话中。 您应该在成功登录后将所有用户访问的页面(例如名称)添加到会话作为属性,然后在此过滤器中,检查用户请求访问的页面? 如果会话属性包含该页面dofilter,则调用else重定向到访问被拒绝页面。