인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

H K님의 프로필 이미지
H K

작성한 질문수

스프링 시큐리티

2) 인증 필터 - AjaxAuthenticationFilter

경로설정

해결된 질문

작성

·

333

·

수정됨

0

protected AjaxLoginProcessingFilter(String defaultFilterProcessesUrl) {
super(new AntPathRequestMatcher("/xxx"));
}
이렇게 설정하는건 자바에서 직접 설정하는거고

이전에 설정파일에서

http
.authorizeRequests().antMatchers("/xxx") 경로 설정한거랑

두개다 같다고 생각하면 되는거죠 ?

답변 1

0

정수원님의 프로필 이미지
정수원
지식공유자

관련성은 있으나 같은 개념은 아닙니다

protected AjaxLoginProcessingFilter(String defaultFilterProcessesUrl) {
super(new AntPathRequestMatcher("/xxx"));
}

위의 구문은 사용자가 서버로 요청을 하게 될 경우 만약 /xxx 로 하게 된다면 AjaxLoginProcessingFilter 가 그 요청을 가로채어 동작한다는 의미입니다. 즉 AjaxLoginProcessingFilter 가 /xxx 요청에 대한 작동여부를 결정하기 위해 설정하는 정보입니다.

http
.authorizeRequests().antMatchers("/xxx")

은 초기화 시 /xxx 정보를 시큐리티 내부적으로 미리 저장하게 되고 사용자가 만약 /xxx 로 요청을 하게 되면 시큐리티에서 저장해 놓은 /xxx 정보와 매칭해서 정보가 서로 일치하는지 검증해서 일치하면 접근을 거부하겠다 혹은 통과시키겠다 라는 결정을 하기 위함입니다.

그리고 보통

http
.authorizeRequests().antMatchers("/xxx")

protected AjaxLoginProcessingFilter(String defaultFilterProcessesUrl) {
super(new AntPathRequestMatcher("/xxx"));
}

보다 뒤쪽에서 처리되기 때문에 AjaxLoginProcessingFilter 가 영향을 받지 않을 수도 있습니다.

H K님의 프로필 이미지
H K
질문자

아.. ajax필터는 별도로 처리해야 하므로 상속받아서 처리했고 이를위해

super(new AntPathRequestMatcher("/api/login"));
--> 필터 가로채기를 이용한거네요 ?

정수원님의 프로필 이미지
정수원
지식공유자

네 맞습니다.

AjaxLoginProcessingFilter 는 인증 처리를 위한 필터이기 때문에 /xxx 로 오는 요청을 받아 처리하기 위해서는 중간에 다른 필터에 의해 차단되지 않아야 합니다.

그래서

http
.authorizeRequests().antMatchers("/xxx")

와는 별개로 처리가 되어져야 합니다.

H K님의 프로필 이미지
H K

작성한 질문수

질문하기