Spring Boot 프로젝트에 spring-boot-starter-security 의존성을 추가하면 별도의 설정없이 기본 로그인 페이지가 자동으로 활성화된다.

로컬 테스트 및 권한 테스트를 위해 SpringSecurity 설정을 명시적으로 정의하여 SecurityConfig를 구성

 

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        // Spring Security 5버전 이하
//       http
//                .csrf().disable()
//                .authorizeHttpRequests()
//                .requestMatchers("/public/**").permitAll()
//                .requestMatchers("/admin/**").hasRole("ADMIN")
//                .anyRequest().authenticated()
//                .and()
//                .formLogin();

        // Spring Security 6.1 버전 이후
        http
                .csrf(csrf -> csrf.disable())
                .authorizeHttpRequests(auth -> auth
                        .requestMatchers("/public/**").permitAll()
                        .requestMatchers("/admin/**").hasRole("ADMIN")
                        .anyRequest().authenticated()
                )
                .formLogin(withDefaults()); // 기본 로그인 폼
        return http.build();
    }
}

 

설명 

1.@Configuration

-> Spring Security 설정 클래스로 등록하여 SecurityFilterChain Bean 생성

 

2. authorizeHttpRequests()

-> URL 패턴별 접근 권한을 설정
/public/** : 인증 없이 접근 허용
/admin/** : ROLE_ADMIN 권한 필요
그 외 요청 : 인증 필요

3. formLogin(withDefaults())
→ Spring Security에서 제공하는 기본 로그인 페이지 활성화

+ Recent posts