Spring/security

권한제어 하는 여러가지 방법

synclair 2024. 1. 24. 17:09

1. @Secured('권한이름')

@Operation(summary = "테스트", description = "권한 인가 테스트")
    @Secured("ROLE_Admin") // 해당 메서드에 대한 권한 설정
    @PostMapping("/test")
    public String test() {
        return "success";
    }

2. 여러 권한을 접근 제어 하려면 @PreAuthorize


@RestController
@RequiredArgsConstructor
@RequestMapping("/members")
@Tag(name = "유저(멤버)", description = "유저 관련 api 입니다")
public class MemberController {

    // ...

    @Operation(summary = "테스트", description = "권한 인가 테스트")
    @PreAuthorize("hasAnyAuthority('ROLE_Admin', 'ROLE_Team_Leader')")
    @PostMapping("/test")
    public String test() {
        return "success";
    }

3. @AuthenticationPrincipal

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/user-details")
    public ResponseEntity<String> getUserDetails(@AuthenticationPrincipal UserDetails userDetails) {
        String username = userDetails.getUsername();
        // UserDetails에서 다른 정보에 접근할 수도 있습니다.

        return ResponseEntity.ok("Username: " + username);
    }
}