๋ฐ์ํ
Spring Boot ํ๋ก์ ํธ์์๋ ์ธํฐ์ ํฐ๋ฅผ ์ด์ฉํด ํ์ฉ๋ URL๋ง ์ ๊ทผํ ์ ์๋๋ก ์ค์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ณด์์ด ํ์ํ ๊ด๋ฆฌ์ ํ์ด์ง, ๋ก๊ทธ์ธ ์ฒดํฌ, ์ ์ ์์ ํํฐ๋ง ๋ฑ์ ์ํด PageInterceptor๋ฅผ ์์ฃผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
HandlerInterceptor
public class PageInterceptor implements HandlerInterceptor {
private static final Set<String> allowedPages = Set.of("/", "/member/login");
private static final List<String> allowedPrefixes = List.of("/js/", "/css/", "/images/", "/favicon.ico", "/geoserver/", "/error");
private static final List<String> allowedExtensions = List.of(".js", ".css", ".png", ".jpg", ".jpeg", ".gif", ".svg", ".ico");
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String uri = request.getRequestURI();
String header = request.getHeader("X-Requested-With");
for (String ext : allowedExtensions) {
if (uri.endsWith(ext)) return true;
}
for (String prefix : allowedPrefixes) {
if (uri.startsWith(prefix)) return true;
}
if ("XMLHttpRequest".equals(header)) return true;
if (allowedPages.contains(uri)) return true;
response.sendRedirect("/");
return false;
}
}
WebMvcConfiogurer
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new PageInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/css/**", "/js/**", "/images/**", "/favicon.ico", "/error", "/geoserver/**", "/api/**");
}
}
๋ฐ์ํ