쌓고 쌓다

Spring Security 권한처리 본문

프로그래밍/spring

Spring Security 권한처리

승민아 2024. 1. 16. 15:17

 

앞전의 코드에서 다음의 코드가 권한 확인이 안되어서

hasAnyRole("ADMIN", "MANAGER") => hasAnyAuthority 또는 hasAuthority로 변경했다.

 

 

hasAnyAuthority, hasAuthority가 대소문자를 구분하므로 setRole("user")로 해놓고

권한을 "ADMIN"으로 확인하면 안된다.

 

 

SecurityConfig

@Configuration
@EnableWebSecurity
@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class SecurityConfig {

    ...
    
}

@Secured, @PreAuthorize, PostAuthorize를 사용하기위해 @EnableMethodSecurity를 추가해주자.

 

 

TestController.java

@Controller
public class IndexController {

    @GetMapping("/info")
    @ResponseBody
    @Secured("admin")
    public String info() {
        return "개인정보";
    }

    @GetMapping("/data")
    @ResponseBody
    @PreAuthorize("hasAuthority('admin') or hasAuthority('manager')")
    //@PostAuthorize("hasAuthority('admin')")
    public String data() {
        return "data";
    }
}
  • @Secured : 해당 메서드를 수행할 수 있는 권한을 메서드 단위로 설정할 수 있다.
  • @PreAuthorize, @PostAuthorize : 메서드를 다 수행하기 전, 후에 인증을 거치게할 수 있다.
Comments