[Security] Form Login 인증 Handler 구현하기

손은실·2024년 6월 21일
0

Spring Boot

목록 보기
8/13
post-thumbnail
post-custom-banner

들어가며

문제

Spring Security Form Login을 커스텀해 로그인을 구현습니다.
그런데 로그인에 성공했지만 클라이언트에게 404가 반환되었고, 로그인에 실패했을 때는 html이 반환되는 문제가 발생했습니다.

  • 성공했을 때

  • 실패했을 때



원인

Form Login은 기본적으로 HTTP 리다이렉션을 반환하기 때문입니다.
존재하지 않는 페이지를 반환해 404 에러가 나온 것이고, 로그인 실패 시에는 기본 제공 로그인 페이지가 리다이렉션 되어 사용자에게 전달된 것입니다.

프론트엔드에서 페이지 작업을 따로 할 예정이기 때문에, API 호출에 대한 성공 여부만 반환 받고 싶었습니다. 그래서 인증 성공, 실패 핸들러를 만들어 Security와 연결시켰습니다!




성공/실패 Handler

개발환경
Spring Boot 3 / Spring Security 6


인터페이스 구현

🟢 AuthenticationSuccessHandler

AuthenticationSuccessHandler 인터페이스를 구현해 성공 핸들러 클래스를 만듭니다.

  • 응답 값 유형
  • 응답과 함께 전달할 문자열

🟢 AuthenticationFailureHandler

AuthenticationFailureHandler 인터페이스를 구현해 실패 핸들러 클래스를 만듭니다.

  • 성공 응답 값에 HTTP 상태 코드를 추가해줍니다. (401: 권한 없음)

핸들러 등록

🟢 SecurityConfig

시큐리티 설정에 만든 핸들러를 연결시킵니다.

Bean 등록

필터 체인 등록



테스트

원했던 결과 값을 받을 수 있습니다!

성공


실패

post-custom-banner

0개의 댓글