我正在尝试将 WebFilter 与 JSF 2 一起使用,但我的过滤器不起作用。无法识别 urlPattern。
我的过滤器类:
@WebFilter(urlPatterns = {"/rws/*"})
public class AuthorizationFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession(true);
Object o = session.getAttribute("user");
HttpServletResponse res = (HttpServletResponse) response;
if(o == null)
res.sendRedirect(req.getContextPath() + "/login.xhtml");
else
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
在我的结构中,我想保护 rws 文件夹中的所有页面,但我无法配置过滤器。
我试过@WebFilter("/rws/*") @WebFilter("/faces/rws/*")
我的过滤器永远不会被执行!
我注意到浏览页面时 url 没有改变。例如,用户打开 index.xhtml 执行登录,然后重定向到页面 loginOk.xhtml。LoginOk.xhtml 页面具有指向文件夹 rws 中页面的链接。
当我单击链接时,url 没有改变,即我正在浏览文件夹页面 rws 但浏览器中的 url 保持不变(http://jsftest.com:8080/TestePrimeFaces/faces/loginOK.xhtml)。那是问题吗?
用了commandLink作为链接,不知道是不是最合适。有谁知道问题出在哪里?