본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 스프링 인터셉터 - 인증 체크

by 오주현 2022. 2. 23.
반응형

스프링 인터셉터 - 인증 체크


전 강의에서 서블릿 필터로 개발한 부분을 스프링 인터셉터로 바꾸어 개발하는 실습을 진행했다.

 

public class LoginCheckInterceptor implements HandlerInterceptor {

HandlerInterceptor를 구현한다.

 

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

여러 기능이 있지만 그 중에 preHandle만 사용하면 된다.

 

String requestURI = request.getRequestURI();

    log.info("인증 체크인터셉터 실행 {}", requestURI);

    HttpSession session = request.getSession();

    if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) {
        log.info("미인증 사용자 요청");
        //로그인으로 redirect
        response.sendRedirect("/login?redirectURL=" + requestURI);
        return false;
    }

    return true;
}

서블릿 필터 코드에 비해 훨씬 간결하다. 인증은 컨트롤러 호출 전에만 호출이 되면 되기 때문에 preHandle만 구현하면 된다고 한다.

 

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new LogInterceptor())
            .order(1)
            .addPathPatterns("/**")
            .excludePathPatterns("/css/**", "/*.ico", "/error"); // 모든걸 허용하지만 이것들은 뺼거야..라는 뜼이다.

    registry.addInterceptor(new LoginCheckInterceptor())
            .order(2)
            .addPathPatterns("/**")
            .excludePathPatterns("/", "/members/add", "/login", "/logout",
                    "/css/**", "/*.ico", "/error");
}

.registry로 등록을 해준다.

 

인터셉터를 적용하거나 하지 않을 부분을

 

.addPathPatterns("/") // 적용 할 부분 .excludePathPatterns("/", "/members/add", "/login", "/logout", "/css/", "/*.ico", "/error"); //적용하지 않을 부분

 

에 적어주면 된다.

 

사실 서블릿 필터와 별 차이는 없지만 인터셉터를 사용하는 게 훨 편하기 때문에 특별한 이유가 없다면 필터 대신 인터셉터를 주로 활용하면 된다고 한다.


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

반응형

댓글