0
대상에 대한 처리 전에 세션 내에서 로그인 한 사용자의 유효성을 검사하는 모든 요청을 가로 채기 위해 필터를 사용했습니다. 하지만 문제는 로그인을 시도 할 때 로그인 페이지로 계속 리디렉션된다는 것입니다. 사용필터 및 서블릿 인증
참조 : https://stackoverflow.com/questions/13274279/authentication-filter-and-servlet-for-login
필터
public class AuthenticationFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter init method()");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("Filter doFilter method()");
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession();
Users loggedIn = (Users) session.getAttribute("LoggedInUser");
boolean loggedInUser = session != null && session.getAttribute("LoggedInUser") != null;
String logInURI = req.getContextPath() + "/loginPage.jsp";
boolean loginRequest = req.getRequestURI().equals(logInURI);
if (loggedInUser || loginRequest) {
chain.doFilter(request, response);
} else {
res.sendRedirect(logInURI);
}
}
@Override
public void destroy() {
}
}
web.xml의
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>