通过URL阻止页面访问

时间:2017-08-21 20:38:33

标签: jsf

大家早上好! 我有一个具有访问控制的应用程序,它工作正常 但是,用户可以在浏览器中编写URL并访问他无权访问的页面

有人可以帮我解决这个问题吗?

以下是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");
    }
}

1 个答案:

答案 0 :(得分:0)

在回答之前,我建议您使用一个安全框架来控制页面的访问。像春天安全一样强大的东西。

但是在这种情况下,您只检查了用户会话是否已经过验证,但没有任何与页面或页面名称相关的内容添加到会话中。 您应该在成功登录后将所有用户访问的页面(例如名称)添加到会话作为属性,然后在此过滤器中,检查用户请求访问的页面? 如果会话属性包含该页面dofilter,则调用else重定向到访问被拒绝页面。