작성
·
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 설정이 아래에 위치할 수록 위에 위치한 설정을 덮어쓰게 되어서 그런 결과가 나타나게 됩니다.