스프링 시큐리티의 인가 및 설정을 담당하는 클래스
@Configuration
@EnableWebSecurity
public class SecurityConfig {
// BCryptPasswordEncoder 등록
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
// 기본 설정
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
//csrf disable
http
.csrf((auth) -> auth.disable());
//From 로그인 방식 disable
http
.formLogin((auth) -> auth.disable());
//http basic 인증 방식 disable
http
.httpBasic((auth) -> auth.disable());
//경로별 인가 작업
http
.authorizeHttpRequests((auth) -> auth
.requestMatchers("/login", "/", "/join").permitAll()
.requestMatchers("/admin").hasRole("ADMIN")
.anyRequest().authenticated());
//세션 설정
// JWT를 통한 인증/인가를 위해 세션을 STATELESS 상태로 설정
http
.sessionManagement((session) -> session
.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
return http.build();
}
}