Table of Contents
Spring Boot – WebFilter 활성화
WebFilter 는 사용자 요청이 Controller 에 전달되기 이전에,
각종 로깅, 로그인 체크, 권한체크 등을 수행할 수 있습니다.
의존성 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
@ServletComponentScan 추가
@ServletComponentScan
@SpringBootApplication
public class WarehousewebApplication {
public static void main(String[] args) {
SpringApplication.run(WarehousewebApplication.class, args);
}
}
Filter 추가
@WebFilter("/*")
public class LoggingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
// HttpServletResponse httpServletResponse = (HttpServletResponse) response;
System.out.println(httpServletRequest.getRequestURI());
chain.doFilter(request, response);
}
}
Filter 사용법
@WebFilter("/target")
// 와일드카드
@WebFilter("/*")
// 여러개
@WebFilter(value={"/target", "/target2"})
@WebFilter(urlPatterns={"/target", "/target2"})
Filter 에서 Exception 처리하기
@WebFilter("/*")
@RequiredArgsConstructor
public class AuthCheckFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
String authToken = httpServletRequest.getHeader("X-Auth-Token");
if (authToken == null || authToken.equals("")) {
// 커스텀 데이타
ApiResponseMessage apiResponseMessage = new ApiResponseMessage(ResponseCode.UNAUTHORIZED);
httpServletResponse.setStatus(RestExceptionHandler.CUSTOM_ERROR_CODE);
httpServletResponse.setContentType("application/json");
httpServletResponse.setCharacterEncoding("UTF-8");
httpServletResponse.getWriter().write(convertObjectToJson(apiResponseMessage));
return;
}
// ......
chain.doFilter(httpServletRequest, httpServletResponse);
}
public String convertObjectToJson(Object object) throws JsonProcessingException {
if (object == null) {
return null;
}
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(object);
}
}