2011-09-15 12 views
1

나는 스프링의 @Around 어노테이션을 사용하여 DAO 호출의 캐싱을 제공하고 스프링 보안의 @PostFilter를 사용하여 특정 레코드의보기를 제한한다. 그러나 캐시가 PostFilter를 우회하여 보안 문제가 발생할 수 있다고 우려하고 있습니다.Spring @PostFilter는 언제 실행됩니까?

@PostFilter@Around이 대상 객체를 어떤 순서로 포장할지 어떻게 알 수 있습니까?

답변

3

order 속성을 <security:global-method-security>으로 설정하여 스프링 보안의 측면을 지정할 수 있습니다 (기본적으로 0 일 것입니다).

7.2.4.7 Advice ordering에 설명 된대로 당신은 또한 자신의 측면의 순서를 지정할 수 있습니다

:

가장 높은 우선 순위 조언 "의 길에"먼저 실행 (그래서 조언을하기 전에 두 가지를 제공, 가장 높은과 함께 하나 선행 우선 실행). 조인 포인트에서 "나가는 중"에서 가장 높은 우선 순위 조언이 마지막으로 실행됩니다 (따라서 두 가지 조언이 주어지면 우선 순위가 가장 높은 조언이 두 번째 실행됩니다).
...
우선 순위를 지정하여 실행 순서를 제어 할 수 있습니다. 이는 aspect 클래스에서 org.springframework.core.Ordered 인터페이스를 구현하거나 Order 애노테이션으로 annotation함으로써 일반적인 Spring 방식으로 수행된다. 두 가지 측면에서 보면 Ordered.getValue() (또는 주석 값)에서 낮은 값을 반환하는 aspect가 우선 순위가 더 높습니다.

+0

감사합니다. 올바른 결과를 얻으려고 몇 가지 실험을했습니다. – chotchki

관련 문제