작성
·
428
답변 4
0
#LoginCheckFilter
@Slf4j
public class LoginCheckFilter implements Filter {
private static final String[] whiteList = {"/", "/memberInsertForm", "/login", "/logout", "/css/*", "/img/*", "/fonts/*"};
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String requestURI = httpRequest.getRequestURI();
HttpServletResponse httpResponse = (HttpServletResponse) response;
try{
log.info("인증 체크 필터 시작 {}", requestURI);
if (isLoginCheckPath(requestURI)) {
log.info("인증 체크 로직 실행 {}", requestURI);
HttpSession session = httpRequest.getSession(false);
if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) {
log.info("미인증 사용자 요청 {}", requestURI);
//로그인 성공시 다시 페이지로 돌아오기 위해
httpResponse.sendRedirect("/login?redirectURL="+ requestURI);
return;
}
}
chain.doFilter(request, response);
} catch (Exception e){
throw e;
}finally{
log.info("인증 체크 필터 종료 {}", requestURI);
}
/**
* whiteList 의 경우 인증 체크 x
*/
}
private boolean isLoginCheckPath(String requestURI){
return !PatternMatchUtils.simpleMatch(whiteList, requestURI);
}
}
코드는 이렇습니다. requestURI에 /fonts가 찍히네요..
0
0
저 혹시 계속 requestURI에 원하는 자원이 안찍히고 /fonts/***** 이런것들이 찍히는데 원하는 자원으로 찍을 수 있는 방법이 없을까요?
그럼 /fonts로 시작되는 uri는 로그를 찍지 않고, 다음 필터로 넘어가게 처리하시면 될 것 같습니다.
filter에는 exclude pattern을 기능으로 제공하지 않기 때문에 직접 만드셔야 합니다.
/fonts 이하 경로가 로그에 남지 않길 원하신다면 조건문(/fonts 이하 경로가 아닐 때)을 만들고 로그를 남기는 작업을 수행해야 합니다.