URL 레벨 보안 적용

@Configuration
@EnableWebSecurity
public class SecurityConfig{

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.csrf(csrf -> csrf.disable())
                .authorizeHttpRequests(auth -> auth
                        .requestMatchers("/user/**").authenticated()
                        .requestMatchers("/manager/**").hasAnyRole("ADMIN", "MANAGER")
                        .requestMatchers("/admin/**").hasRole("ADMIN")
                        .anyRequest().permitAll()
                )

 

 

메서드 레벨 보안 적용

 

1. @Secure

단순 권한 체크

@Configuration
@EnableWebSecurity
@EnableMethodSecurity(securedEnabled = true) // 추가! - secured 어노테이션 활성화
public class SecurityConfig{
	...
}
    @Secured("ROLE_ADMIN")
    @GetMapping("/info")
    public String info() {
        return "개인정보";
    }

    @Secured({"ROLE_ADMIN", "ROLE_MANAGER"})
    @GetMapping("/update")
    public String update() {
        return "정보 수정";
    }

 

2. @PreAuthorize

복잡한 조건 체크

메서드가 실행되기 직전에 검사

@Configuration
@EnableWebSecurity
@EnableMethodSecurity(prePostEnabled = true) // 추가! - preAuthorize 어노테이션 활성화
public class SecurityConfig{
	...
}
    @PreAuthorize("hasRole('ADMIN') or hasRole('MANAGER')")
    @GetMapping("/data")
    public String data() {
        return "아주 중요한 정보;";
    }

+ Recent posts