티스토리 뷰

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);
	}
}

- 어떤 링크에 동작할 것인지 정해준다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함