[스프링 부트] 26. Authentication(인증) 필터 - 웹 게시판 v5

KangHo Lee's avatar
Nov 27, 2024
[스프링 부트] 26. Authentication(인증) 필터  - 웹 게시판 v5

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

devleekangho