我正在尝试使用doFilter和我的web.xml页面强制用户登录以访问任何“安全”页面。
我找到了一个示例here,我已经实现了它。我有一个小问题。当我将过滤器定义放入web.xml时,整个网站无法加载。我相信这是因为我没有包含过滤器的java文件的正确类路径。我正在向您展示我的项目资源管理器旁边的web.xml页面。 我希望您能帮助我完成<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);
}
到目前为止,我的服务器的其余部分工作,网站运行,但我无法获得过滤器。任何建议都被接受!
谢谢!
答案 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 / *