해결된 질문
작성
·
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 가 영향을 받지 않을 수도 있습니다.
네 맞습니다.
AjaxLoginProcessingFilter 는 인증 처리를 위한 필터이기 때문에 /xxx 로 오는 요청을 받아 처리하기 위해서는 중간에 다른 필터에 의해 차단되지 않아야 합니다.
그래서
http
.authorizeRequests().antMatchers("/xxx")
와는 별개로 처리가 되어져야 합니다.
아.. ajax필터는 별도로 처리해야 하므로 상속받아서 처리했고 이를위해
super(new AntPathRequestMatcher("/api/login"));
--> 필터 가로채기를 이용한거네요 ?