Programming/Spring
[스프링부트] 인터셉터
감성적인 개발자
2021. 7. 15. 00:12
Intercepter/SignInCheckInterceptor.java
@Component
@Slf4j
public class SignInCheckInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
log.debug("preHandle");
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user == null) {
response.sendRedirect("/login");
}
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
log.debug("postHandle");
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
log.debug("afterCompletion");
super.afterCompletion(request, response, handler, ex);
}
}
- @Component필수 : Repository, Service, Controller 의 부모클래스
- @Slf4j : Logger logger같이 이름 바꿔쓸 경우 아니면 (그냥 log 쓸거면) 사용
- 상속, 예외처리 필수
Config/InterceptorConfig.java
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Autowired
private SignInCheckInterceptor signInCheckInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 모든 링크에 (/**) 걸고 login을 제외하지 않으면 브라우저가 동작하지 않는다.
registry.addInterceptor(signInCheckInterceptor).addPathPatterns("/main")
.excludePathPatterns("/login");
WebMvcConfigurer.super.addInterceptors(registry);
}
}
- 어떤 링크에 동작할 것인지 정해준다.