1. 필터
AuthenticationFilter
// import jakarta로
public class AuthenticationFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 다운 캐스팅 필요
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;
// 요청에서 세션 불러오기
HttpSession session = req.getSession();
User sessionUser = (User) session.getAttribute("sessionUser");
if (sessionUser == null) {
resp.sendRedirect("/login-form");
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
}
}
- filterChain.doFilter(servletRequest, servletResponse)
- 요청이 다음 필터나 최종 서블릿에 도달하게 합니다.
2. 필터 등록
FilterConfig
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean addAuthFilter() {
FilterRegistrationBean rg = new FilterRegistrationBean();
rg.setFilter(new AuthenticationFilter());
rg.addUrlPatterns("/board/*");
rg.addUrlPatterns("/user/*");
rg.setOrder(1);
return rg;
}
}
- @Configuration
- 설정 파일을 의미합니다.
- Component에 속하기 때문에 컴포넌트 스캔 단계에서 IoC 컨테이너에 빈(Bean)으로 등록됩니다.
- @Bean
- 컴포넌트 스캔 시 해당 메서드를 실행 → 반환값을 IoC 컨테이너에 등록합니다.
- rg.addUrlPatterns("/user/*");
- * 는 하위 경로 모두를 포함합니다.
- rg.setOrder(1)
- 필터가 적용되는 순서를 결정합니다.
- 값이 작을수록 우선순위가 높습니다.
Share article