[점프 투 스프링부트] 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 님 5261
M 2022년 7월 7일 11:56 오후
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 오전