(error)SpringSecurity FailHandler / DI

전성영·2022년 5월 28일
0

Error

목록 보기
2/16

스프링 시큐리티에서 로그인 실패 시 사용자에게 따로 알려주지 않고 longin페이지로 이동을 하는데. 실패 메시지를 주고 싶었다.

하는 도중 이러한 에러가 떴고, 찾아보니 의존성 주입 무슨 충돌 이러한 얘기가 나왔다.

알고보니 (팀원분이 알려주셨다)
@Component 등록을 안해줬던 것...
핑계를 대보자면 등록하면서 에러를 찾다가 안되서 삭제를 했었는데 이것 또한 제대로 알고있지 않은 내 잘못이다,, 제대로 알아야 겠다..

@Component 어노테이션은 Bean Configuration 파일에 Bean을 따로 등록하지 않아도 사용할 수 있다.
빈 등록자체를 빈 클래스 자체에다가 할 수 있다는 의미이다.


또한 의존성 주입을 할 때 방법이 여러가지이다.

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    private final AuthenticationFailureHandler customFailureHandler;
    private final JWTAuthProvider jwtAuthProvider;
    private final HeaderTokenExtractor headerTokenExtractor;

    public WebSecurityConfig(JWTAuthProvider jwtAuthProvider, HeaderTokenExtractor headerTokenExtractor, AuthenticationFailureHandler customFailureHandler) {
        this.jwtAuthProvider = jwtAuthProvider;
        this.headerTokenExtractor = headerTokenExtractor;
        this.customFailureHandler = customFailureHandler;
    }

이러한 코드를(생성자 주입)

@RequiredArgsConstructor
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    private final AuthenticationFailureHandler customFailureHandler;
    private final JWTAuthProvider jwtAuthProvider;
    private final HeaderTokenExtractor headerTokenExtractor;
}

@RequiredArgsConstructor 을 사용한 생성자 주입 / lombok

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private  AuthenticationFailureHandler customFailureHandler;
    @Autowired
    private JWTAuthProvider jwtAuthProvider;
    @Autowired
    private HeaderTokenExtractor headerTokenExtractor;

이러한 식으로 해줄 수 있다.(필드 주입)

이 이외에도 setter주입이 있는데 읽기 쉽고, 사용하기 편하다는 것 말고는 장점이 없다고 한다.
생성자주입 고고!!

여기 에도 정리를 해놨으니 나중에 참고하면서 또 봐야겠다.

끝!

profile
Slow and Steady

0개의 댓글