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() で null かどうかをチェックするユーザー フィールドがあります。
最初:私のコードは正しいですか?:
UserSession auth = (UserSession) req.getSession().getAttribute("UserSession");
私のインデックスページは次のとおりです。
/Manager/faces/index.xhtml
ログインすると、すべてのページにアクセスできるので、機能していません。
dofilter メソッドの system.out.println でさえ表示されません。どこかで doFilter() を呼び出す必要がありますか?