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

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

Luke님의 프로필 이미지
Luke

작성한 질문수

스프링 시큐리티

9) 인증 성공 핸들러 : CustomAuthenticationSuccessHandler

CustomAuthenticationSuccessHandler에서 궁금점

작성

·

311

0

1.onAuthenticationSuceess를 오버라이딩 하면서

setDefaultTargetUrl("/")로 설정했는데요

이렇게 되면SecurityConfig파일에서

defaultSuccessUrl("/")를 생략해도 되나요?

2.아래 다른분이 SuccessHandler가 동작하지 않으면

defaultSuccessURl위치를 successHandler위쪽으로 올리라고 하셔서 그대로 수정하니 동작했습니다.

이때 defaultSuccesURl의 설정 위치가 successHandler의
커스터마이징한 SuccessHandler의 동작에 영향을 주는지 
궁금합니다. 

답변 1

3

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

1.onAuthenticationSuceess를 오버라이딩 하면서

setDefaultTargetUrl("/")로 설정했는데요

이렇게 되면SecurityConfig파일에서

defaultSuccessUrl("/")를 생략해도 되나요?

네 생략해도 됩니다. 

SuccessHandler 와 defaultSuccessUrl 모두 다 설정을 할 경우에 그 중에서 하나만 적용됩니다.

이와 관련해서 아래 질문에 연결해서 답변을 하도록 하겠습니다 .

2.아래 다른분이 SuccessHandler가 동작하지 않으면

defaultSuccessURl위치를 successHandler위쪽으로 올리라고 하셔서 그대로 수정하니 동작했습니다.

이때 defaultSuccesURl의 설정 위치가 successHandler의 커스터마이징한 SuccessHandler의 동작에 영향을 주는지 궁금합니다. 

말씀하신 것처럼 API 설정 위치에 따라 적용되는 결과가 달라집니다.

successHandler() 와 defaultSuccessURl() 를 설정하게 되면 스프링 시큐리티가 초기화 되면서 FormLoginConfigurer 의 부모클래스인  AbstractAuthenticationFilterConfigurer 의 successHandler 속성에 저장이 되고 다시 UsernamePasswordAuthenticationFilter 의 successHandler 속성에  반영이 됩니다.

로그인에 성공을 하게 되면 UsernamePasswordAuthenticationFilter 에 저장된 successHandler 가 호출이 되는 구조입니다.

그렇기 때문에 API 설정이 아래에 위치할 수록 위에 위치한 설정을 덮어쓰게 되어서 그런 결과가 나타나게 됩니다.

Luke님의 프로필 이미지
Luke

작성한 질문수

질문하기