doFilter JSF用户身份验证

时间:2014-11-05 01:32:55

标签: java jsf-2 filter

我正在尝试使用doFilter和我的web.xml页面强制用户登录以访问任何“安全”页面。

我找到了一个示例here,我已经实现了它。我有一个小问题。当我将过滤器定义放入web.xml时,整个网站无法加载。我相信这是因为我没有包含过滤器的java文件的正确类路径。我正在向您展示我的项目资源管理器旁边的web.xml页面。 Auth Filter我希望您能帮助我完成<filter-class> </filter-class>

所需的课程路径

我也在展示我的doFilter method

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    UserBean userBean = (UserBean)((HttpServletRequest)request).getSession().getAttribute("userBean");

    if(userBean == null || !userBean.isSuccessfullLogin()){
        String contextPath = ((HttpServletRequest)request).getContextPath();
        ((HttpServletResponse)response).sendRedirect(contextPath + "/index.xhtml");
    }
    chain.doFilter(request, response);
}

到目前为止,我的服务器的其余部分工作,网站运行,但我无法获得过滤器。任何建议都被接受!

谢谢!

2 个答案:

答案 0 :(得分:0)

我现在还没有编写任何过滤器,但通常如果你必须在web.xml中定义一个类,它就被命名为

package.Class

因此,如果您的AuthenticationFilter类在包“my.filter.package”中,如下所示:

package my.filter.package;
public class AuthenticationFilter {...}

过滤器类声明应该是

<filter-class>my.filter.package.AuthenticationFilter</filter-class>

答案 1 :(得分:0)

昨晚我确实让它上班了。 Filters.AuthenticationFilter有效。这是我的网址模式错了。

而不是将我的网址格式设置为/ secured / *我需要将其设为/ faces / secured / *