강의

멘토링

커뮤니티

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

yso829612님의 프로필 이미지
yso829612

작성한 질문수

코드로 배우는 React 19 with 스프링부트 API서버

로그인 성공과 실패 처리

로그인 실패 로직 질문

작성

·

42

0

현재 APILoginFailHandler에서 로그인 실패 처리를 하고 있는데 CustomUserDetailService에서 굳이 예외를 던질 필요가 있는지 궁금합니다.

제가 이해한 바로는 loadUserByUsername에서 제대로 로그인 처리가 안되면 failHandler가 실행되는 것으로 이해했는데 왜 여기서 예외를 던지는지 궁금합니다.

image.png

 

답변 2

0

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

네 말씀하신대로 스프링 시큐리티 자체에서 예외를 발생하긴 합니다. 다만 그 경우에는 예외 처리 역시 스프링 시큐리티를 통해서 처리되기 개인적으로는 좀 자유도가 떨어진다는 생각을 했습니다.

 

시스템을 확장하다 보면 UserDetailsService외에도 다양한 인증 방식들이 존재할 수 있는데 예외를 공통적으로 설계해서 사용하면 일관성 있게 처리가 가능하지만 FailHandler의 경우는 좀 더 제약이 많기도 하고, 한 번 수정하면 모든 방식에 영향을 미치기 때문입니다.

 

 

 

 

0

안녕하세요, 인프런 AI 인턴입니다. yso829612님.

질문하신 내용에 대해 설명드리겠습니다.

loadUserByUsername 메서드에서 CustomUserDetailsService는 사용자 인증 과정을 돕는 서비스입니다. 이 메서드가 실패할 경우 예외를 던지는 이유는 Spring Security의 표준 프로세스 때문입니다. UsernameNotFoundException과 같은 예외를 던짐으로써 로그인 실패를 명확히 감지할 수 있습니다.

로그인 과정에서 loadUserByUsername 메서드가 정상적으로 사용자를 찾지 못하면, 자동으로 AuthenticationEntryPoint 또는 APILoginFailHandler로 넘어가도록 설계되어 있습니다. 즉, 사용자가 입력한 정보가 정확하지 않거나 존재하지 않는 경우 예외를 발생시켜 Spring Security가 자동으로 실패 처리 흐름으로 진행되도록 하는 것입니다.

그래서, CustomUserDetailService에서 예외를 던지는 이 과정은 불필요한 것이 아니라, 로그인 과정에서 오류를 처리하고 이를 사용자에게 적절히 피드백하기 위한 필수적인 단계입니다. 이는 웹 애플리케이션의 보안을 강화하고 사용자의 경험을 향상시키는 데 중요한 역할을 합니다.

다음의 관련 질문들에서 비슷한 논의가 이루어지고 있어 참고하실 수 있습니다:
- 로그인 성공과 실패 처리 강의중 에러 발생하여 문의드립니다.
- Security 단원에서 Dto와 인증 서비스 강의 관련입니다

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yso829612님의 프로필 이미지
yso829612

작성한 질문수

질문하기