Spring MVC에서 컨트롤러로 요청이 들어가기 전에 해당 요청을 가로채고 처리할 수 있는 기능을 제공하는 클래스
admin권한이 필요한 모든 컨트롤러에서 다음과 같은 코드를 반복해야한다.
if(!rq.isAdmin()) {
throw new RuntimeException("관리자만 접근할 수 있습니다.");
NeedToAdminInterceptor.java
package com.ll.sb.global.interceptor;
@Component
@RequiredArgsConstructor
public class NeedToAdminInterceptor implements HandlerInterceptor {
private final Rq rq;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
if (!rq.isLogined()) {
throw new RuntimeException("로그인 후 이용해주세요.");
}
if (!rq.isAdmin()) {
throw new RuntimeException("관리자만 이용할 수 있는 페이지 입니다.");
}
return true;
}
}
WebMvcConfig.java
package com.ll.sb.global.webMvc;
@Configuration
@RequiredArgsConstructor
public class WebMvcConfig implements WebMvcConfigurer {
private final NeedToAdminInterceptor needToAdminInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(needToAdminInterceptor)
.addPathPatterns("/adm/**");
}
}