[점프 투 스프링부트] WebSecurityConfigurerAdapter가 deprecated되었습니다. 어떻게 바꾸어야 하나요?

https://wikidocs.net/162255 3-07, 로그인과 로그아웃 장이 제일 난감합니다.

WebSecurityConfigurerAdapter가 deprecated되면서,

@Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception{
        auth.userDetailsService(userSecurityService).passwordEncoder(passwordEncoder());
    }

@Override하는 방식이 아닌 @Bean을 이용해 Bean 등록 이후 Security Configure 하는 방식으로 바뀌었습니다.
기존의 http 시큐어 설정 필터링은 구글링해서 성공했는데, 저 userSecurityService를 사용하는게 굉장히 난감합니다.

SecurityConfig.java 코드를 어떻게 바꾸어야 할까요?

imdongle123 714

M 2022년 7월 7일 11:56 오후

+1 아, 그런일이 있었군요, 확인해 보고 책 내용을 수정하도록 하겠습니다. 알려주셔서 감사합니다. - 박응용님, 2022년 7월 8일 8:53 오전 추천 , 대댓글
목록으로
2개의 답변이 있습니다. 1 / 1 Page

박응용

M 2022년 7월 8일 9:00 오전

SecurityConfig.java는 다음과 같이 수정하면 됩니다.

package com.mysite.sbb;

import com.mysite.sbb.user.UserSecurityService;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

@RequiredArgsConstructor
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig {

    private final UserSecurityService userSecurityService;

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/**").permitAll()
                .and()
                    .csrf().ignoringAntMatchers("/h2-console/**")
                .and()
                    .headers()
                    .addHeaderWriter(new XFrameOptionsHeaderWriter(
                            XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
                .and()
                    .formLogin()
                    .loginPage("/user/login")
                    .defaultSuccessUrl("/")
                .and()
                    .logout()
                    .logoutRequestMatcher(new AntPathRequestMatcher("/user/logout"))
                    .logoutSuccessUrl("/")
                    .invalidateHttpSession(true)
        ;
        return http.build();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }


    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration)
            throws Exception {
        return authenticationConfiguration.getAuthenticationManager();
    }
}

박응용

M 2022년 7월 8일 9:51 오전