[시행착오] 헉! SpringSecurity deprecated 된 것들이 왤케 많아?

khyojun·2023년 8월 31일
4

시행착오

목록 보기
5/11

응? Deprecated?? 비상!!!!

우연히 한 책의 실습을 따라하다가 문제가 발생했다! 여기에서 막 여러 부분에서 막 deprecated 됬다고 난리가 나버렸다. 어.. 그런데 실습에서 단골로 많이 나오게 되는 친구들이다...

원인

docs를 보게되니 거의 실습에서 사용이 자주되는 것이 deprecated가 된다는 것이었다.
나중에 더 찾아보니

Spring Security 6.1.0의 release note를 살펴보면 non-lamda DSL methods를 deprecating 했다고 한다


해결책

이게 무슨 일인가.... 그래서 설명내용을 보니 이 내용들을 그냥 메서드 체이닝으로 해결하지말고 앞으로는 람다식을 사용하여서 해결하라고 하신다!

그러면 시키시는대로 해야죠...

변경전

 @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
        return http.authorizeHttpRequests()
                .requestMatchers("/login", "/signup", "/user").permitAll()
                .anyRequest().authenticated()
                .and().formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/articles")
                .and()
                .logout()
                .logoutSuccessUrl("/login")
                .invalidateHttpSession(true)
                .and().csrf()
                .disable()
                .build();
    }

변경후

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
        return http.authorizeHttpRequests((authz) -> authz
                        .requestMatchers("/login", "/signup", "/user").permitAll()
                        .anyRequest().authenticated()
                ).formLogin((formLogin) ->
                        formLogin.loginPage("/login")
                                .defaultSuccessUrl("/articles")
                ).logout((logout) ->
                        logout.logoutSuccessUrl("/login")
                                .invalidateHttpSession(true)
                        )
                .csrf(AbstractHttpConfigurer::disable)
                .build();

    }

다음과 같이 람다식을 활용하여서 해결이 되어진다.

결론

앞으로 나오는 여러가지 버전 문제들은 docs를 잘 확인해보자!

출처

profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

1개의 댓글

comment-user-thumbnail
2023년 8월 31일

오오 저희도 바꿔야겠네요

답글 달기