문제

다음과 같은 일을 할 수 있습니까?

public void doStuff(@RequirePrivilege("foo") User user) {
    // ...
}

그리고 마치 다음과 같은 것처럼 효과적으로 실행 했습니까?

public void doStuff(User user) {
    if(!user.hasPrivilege("foo"))
        throw new UserHasInsufficientPrivileges(); // this is a RuntimeException
    // ...
}

나는 Spring이 다양한 종류의 AOP 지원을 가지고 있음을 알고 있지만, 내가 찾을 수있는 가장 좋은 것은 AOP 코드가 주석을 달아 특정 방법 전후에 실행되도록 주석을 달았습니다. 역전을하고 변경해야 할 코드에 주석을 달고 싶습니다.

궁극적으로 메소드 내부에서 위의 확인을 수행 할 수는 있지만 작업을 수행하는 주석 방법은 추가 문서를 제공하여 사용자가 코드와 동기화하지 않고도 특정 권한이 필요하다는 것이 분명합니다.

도움이 되었습니까?

해결책

주석과 일치하기 때문에이 작업을 수행하기 위해 SAGONTJ를 사용하는 것을 볼 수 있습니다. 그런 다음 주변 측면을 사용하여 사용자 가이 방법을 사용하기 위해 요구 사항을 충족하는지 결정할 수 있습니다.

Spring을 사용하면 Spring을 사용할 수 있으며, 가능하면 런타임 에이 작업을 수행하지 않고 컴파일 타임에 응용 프로그램을 시작할 때 마다이 측면을 사용하기 위해 가격을 지불 할 이유가 없기 때문에 제안합니다. 그러나, 당신이 런타임에 그것을해야한다면, 그것은 가능합니다. 나는 가능한 한 컴파일 타임을 사용하려고 노력합니다.

당신은 active in action을보고 싶을 수도 있습니다 (http://www.manning.com/laddad2/) 그러나 여기에서 예제가 있습니다 : 서명 패턴 :

* *(@RequestParam
(@Sensitive *))

설명

*Any method with one parameter marked with the @RequestParam annotations and the parameter’s type is marked with the @Sensitive annotation.*

예시

void create(@RequestParam
MedicalRecord mr), assuming
MedicalRecord carries the
@Sensitive annotation.

다른 팁

귀하의 "불충분 한 권한"예제를 수행 할 수 있다고 확신합니다. 봄 AOP, 그것이 스프링 보안이 작동하는 방식이기 때문입니다. 조언과 종횡비 주변에서 매우 정교한 일을 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top