인프런 커뮤니티 질문&답변
whitelist관련 질문올립니다.
작성
·
508
답변 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 이하 경로가 아닐 때)을 만들고 로그를 남기는 작업을 수행해야 합니다.