我使用 BalusC 代码实现了一个过滤器类;
@WebFilter("/Manager/faces/*")
public class AuthorizationFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
UserSession auth = (UserSession) req.getSession().getAttribute("UserSession");
if (auth != null && auth.isLoggedIn()) {
chain.doFilter(request, response);
} else {
HttpServletResponse res = (HttpServletResponse) response;
res.sendRedirect(req.getContextPath() + "/index.xhtml");
}
}
我有一个带有 login()、logout()、isLoggedIn() 方法的 UserSession 类,以及一个在 isLoggedIn() 中是否为空的用户字段。
第一:我的代码正确吗?:
UserSession auth = (UserSession) req.getSession().getAttribute("UserSession");
我的索引页面是:
/Manager/faces/index.xhtml
当我登录时,我可以访问我的所有页面,所以它不起作用。
甚至 dofilter 方法中的 system.out.println 也不会显示。我必须在某处调用 doFilter() 吗?