Skip to content

@PostAuthorize / @PreAuthorize #5

@seongjihye1994

Description

@seongjihye1994

@PostAuthorize / @PreAuthorize

@PostAuthorize

@PostAuthorize 어노테이션은 메소드를 실행하고

클라이언트한테 응답을 하기 직전에 권한을 검사하는 어노테이션이다.

잠깐, 클라이언트한테 응답하기 전에 검문이 있겠습니다.

로그인상태 입니까?

그리고 반환되는 사용자의 이름과 현재 사용자의 이름이 일치합니까?

또는 현재 사용자가 관리자 권한을 들고있습니까?

이 조건을 만족하는 사용자의 경우에만 응답할 수 있습니다.

아니라면 403 에러로 응답해드립니다.

뭐 이런식이다.

이 어노테이션을 활성화 시키기 위해서는 SecurityConfig 설정에서 @EnableGlobalMethodSecurity(prePostEnabled = true) 어노테이션을 사용해야 한다.

@PreAuthorize

클라이언트의 요청이 들어와 메소드를 실행하기 전에 권한을 검사하는 어노테이션이다.

//@PostAuthorize("hasRole('ROLE_MANAGER')")
//@PreAuthorize("hasRole('ROLE_MANAGER')")
@Secured("ROLE_MANAGER")
@GetMapping("/manager")
public @ResponseBody String manager() {
		return "매니저 페이지입니다.";
}

이 메소드 호출 전에 Principal (접근 대상)의 레벨이 ROLE_MANAGER 인지 검사한다.

이 메소드 호출 후에 클라이언트에 응답하기 전, Principal (접근 대상)의 레벨이 ROLE_MANAGER인지 검사한다.

사실 이 두 어노테이션은 @secured 하나로 처리해도 충분하지 않을까?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions