반응형
스프링 인터셉터 - 인증 체크
전 강의에서 서블릿 필터로 개발한 부분을 스프링 인터셉터로 바꾸어 개발하는 실습을 진행했다.
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편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : Servlet Exception, 서블릿 예외 처리 시작하기 (0) | 2022.02.24 |
---|---|
[Spring Boot] : ArgumentResolver 활용 (0) | 2022.02.23 |
[Spring Boot] : 스프링 인터셉터 - 요청 로그 (0) | 2022.02.23 |
[Spring Boot] : 스프링 인터셉터 (0) | 2022.02.23 |
[Spring Boot] : Servlet Filter 인증 체크하기 (0) | 2022.02.22 |
댓글