복붙노트

[SPRING] 사용자 정의 메소드 보안 표현식을 작성하는 가장 좋은 방법

SPRING

사용자 정의 메소드 보안 표현식을 작성하는 가장 좋은 방법

@PreFilter 및 @PostFilter 주석에서 사용하려는 자체 메서드 보안 표현식을 만들려고합니다.

자습서 및 이와 유사한 질문 검색하기 두 가지 방법으로 진행했습니다.

첫 번째는 사용자 지정 SecurityExpressionRoot를 제공하기 위해 DefaultMethodSecurityExpressionHandler를 확장하고 createSecurityExpressionRoot를 재정의하는 것입니다.

@PreAuthorize('isOwner(#someEntity)') 

두 번째 방법은 단순히 @Component 클래스를 사용하고 @Pre / @Post 필터에서 @ bean.method ()로 메소드에 액세스하는 것입니다.

@PreAuthorize("@mySecurityService.isOwner('#someEntityl')")

내 질문은 : 선호하는 방법은 무엇입니까? 둘 다 괜찮 으면, 왜 하나를 선택합니까?

고맙습니다 마르코

해결법

  1. ==============================

    1.@PreAuthorize ( 'isOwner (#someEntity)')의 장점은 @ bean.method () 방식으로 :

    @PreAuthorize ( 'isOwner (#someEntity)')의 장점은 @ bean.method () 방식으로 :

    @PreAuthorize ( 'isOwner (#someEntity)') 방법을 통해 @ bean.method () 방법의 장점 :

    나는 @ bean.method ()와 같다. IMHO 모든 차이는 그렇게 중요하지 않습니다 (이전 프로젝트의 경우). 하지만 "쉬운 설정"옵션이 너무 좋습니다! 그래서 다음 프로젝트에서는 모든 @Pre / @Post 케이스에 대한 JUnit 테스트와 함께 @ bean.method () 방법을 시도 할 것이다.

  2. from https://stackoverflow.com/questions/17803406/best-way-to-create-custom-method-security-expression by cc-by-sa and MIT license