• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

경로설정

23.08.08 23:34 작성 23.08.08 23:35 수정 조회수 265

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

질문자

2023.08.09

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

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

네 맞습니다.

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

그래서

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

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