inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

Interceptor 사용해 보기

Interceptor 여러번 호출

해결된 질문

2531

Rechel

작성한 질문수 7

1

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AuthInterceptor());
    }
}
@Slf4j
public class AuthInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info(" >> preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info(" >> postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.info(" >> afterCompletion");
    }
}

 

 (git 주소 가렸어요 ! :D)

vue.js spring-boot vuejs jpa Spring Security spring-security aws JPA

답변 1

1

호돌맨

안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.

(보내주신 git에 interceptor설정 부분이 없어 질문자님이 주신 코드를 제가 추가해서 테스트 했습니다.)

저와 다른 점

저는 한 번요청에 4번 preHandle이 발생했습니다. 질문자님와 환경, 코드에 차이가 있을 수 있으니 감안하고 확인해주세용 ㅎ

문제배경

  • 우선 브라우저에서 http 요청을 날리는경우 /favicon.ico 요청이 자동으로 날라갑니다.

  • 스프링에서는 에러가 발생하면 /error 페이지로 리다이렉션 시켜줍니다.

문제

  1. / 페이지는 저희가 라우터로 등록하지 않은 상태입니다. 그러므로 / 를 요청하면 에러가 발생합니다. 따라서 / 페이지로 요청할때 한 번, /error 페이지로 리다이렉션 될때 한 번. 총 두번의 preHandle이 발생합니다.

     

  2. /favicon.ico 역시 저희가 설정하지 않았으므로 /favicon.ico 으로 요청될때 한 번, /error 페이지로 리다이렉션 될때 한 번 총 두번의 preHandle이 발생합니다.

그러므로 총 네 번의 preHandle 로그가 남게됩니다.

이런 문제를 추적하는 방법

  1. 크롬 개발자도구 -> Network 탭에서 All을 활성화 하신 뒤에 확인하실 수 있습니다. (경우에 따라 Preserve log를 활성화 하시면, 페이지가 리다이렉션 되어도 history가 삭제되지 않습니다.)

image

  1. Intellij 디버그 모드 활용하는 방법입니다. 디버그 모드로 애플리케이션을 실행하시고, 원하시는 코드 지점에 break point 겁니다. 요청을 날린 후 해당 지점에 stop이 걸리면 Evaluate Expression을 용해 코드를 실행해볼 수 있습니다.

image
감사합니다.

0

Rechel

감사합니다 :D

말씀 주신대로 디버깅, 네트워크 해보았더니, 추가로 저의 환경 경우에는 예전에 ServiceWorker 때문에 sw.js를 계속 호출하고 있었더라고요. Network에서는 sw.js만 나오고 favicon은 안나왔어요.

sw.js, favicon.ico를 excludePathPatterns 여기에 담아뒀더니 호출 수가 확 줄었습니다.

그래서 궁금한 것이 하나 더 생겼어요. 왜 호돌맨님은 excludePathPatterns에 넣지도 않았는데 관련된게 나오지 않나요? 예시에서 주신 파비콘의 경우 궁금합니다 '0')...

만약 크롬 환경에 따라 다르다 하면 제자리에서는 오류가 안나는데, 넘의 자리에서는 오류나는 애~매한 상황이 나올 것이 예측되어서요.


※ 그리고, develop 브랜치라는 것을 말씀드리지 않았었습니다. 정말 상세한 답변에 감동받았습니다. 어떤 일이든 흥하세요. 호돌맨님

0

호돌맨

웹 브라우저에서 몇 번 호출하다보면 /favicon.ico가 (없는걸로) 캐시뒤어 더 이상 호출하지 않을겁니다.
개발자도구를 켠 상태에서 cmd+shfit+r 누르셔서 강제 요청 날리면 다시 favicon이 요청될겁니다.

 

0

Rechel

image아....................!! 감사합니다 (왕흥)

Deprecated 관련 사항들

0

104

2

깃헙 collaboator 초대 관련

0

88

1

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

0

157

2

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

0

233

1

다중 데이터를 삭제 할 때

0

271

2

querydsl Q class 이슈

0

415

2

Windows WSL Vue 설정

2

246

1

Dip, @transactional

0

189

1

[vite] http proxy error: /auth/login

0

1045

2

로그인 하고 나서 GET요청으로 메인페이지 요청

0

234

2

GitHub Collaborator 초대 관련

0

257

2

Window에서 Vue.js 설정

0

321

2

(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"

0

713

2

collaboator로 초대받을 수 있을까요??

0

283

2

SecurityMockContext 로부터 유저 정보를 가져오기

0

262

1

given 부분이 길어질 때 어떻게 처리하면 좋을까요?

0

318

1

섹션9 프론트의 코드를 보고싶습니다,,,

0

423

1

Spring Security - defaultSuccessUrl 질문

0

626

1

강의 화면이 나오지 않습니다. 음성과 자막만 나와요

0

302

1

JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ

0

690

2

ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상

0

1180

2

섹션10 언제 나오나요?

0

485

1

CommentService에서 Repository를 호출하지 않는데도

0

343

1

Editor....를 활용한 패턴에 질문있습니다.

0

496

1