📝 순환 참조 문제 및 해결 방법

순환 참조로 인해 아래와 같은 오류 발생

java.lang.StackOverflowError: null

코드 구조와 의존성 관계

  1. CustomAuthenticationFailureHandler 클래스: 이 클래스는 CustomAuthenticationFailureHandler의 인스턴스를 WebSecurityConfig에 주입하려고 합니다.
  2. WebSecurityConfig 클래스: 이 클래스는 CustomAuthenticationFailureHandler를 주입받아, failureHandler 메소드로 사용하고 있습니다.
  3. 로그인 처리 URL과 폼 설정: WebSecurityConfig에서 로그인 폼의 actionloginProcessingUrl("/security-check")로 설정하고 있습니다. 이는 Spring Security가 /security-check URL로 들어오는 POST 요청을 처리하도록 하는 설정입니다.

순환 참조가 발생하는 이유

순환 참조 방지 방법

  1. 폼의 action 설정: 로그인 폼의 action 속성을 loginProcessingUrl에서 지정한 URL(/security-check)과 정확히 일치시켜야 합니다. 이 설정이 없으면, 로그인 폼이 잘못된 URL로 제출될 수 있고, 이로 인해 인증 실패가 반복적으로 발생하면서 순환 참조가 일어날 수 있습니다.

    <form th:action="@{/security-check}" method="post">
        <!-- 폼 필드들 -->
    </form>
    
    
  2. 설정 확인: CustomAuthenticationFailureHandler에서 지정된 포워드 경로(/login-form)와 WebSecurityConfig에서 정의된 loginPage("/login-form")이 올바르게 설정되어 있는지 확인해야 합니다.

📝 BCrypt

BCrypt는 비밀번호를 안전하게 저장하기 위해 설계된 해시 함수입니다. 이는 비밀번호를 저장하거나 확인하는 시스템에서 중요한 역할을 하며, 보안이 필요한 애플리케이션에서 널리 사용됩니다. BCrypt는 보안을 강화하기 위해 여러 가지 중요한 특성을 가지고 있습니다.