Когда выполняется Spring @PostFilter? - PullRequest
1 голос
/ 15 сентября 2011

Я использую аннотации Spring @Around для обеспечения кэширования вызовов DAO, а также использую @PostFilter Spring Security для ограничения просмотра определенных записей. Однако я обеспокоен тем, что кеш может обойти PostFilter и создать проблему безопасности.

Как мне сказать, в каком порядке @PostFilter и @Around обернуть целевой объект?

1 Ответ

3 голосов
/ 15 сентября 2011

Вы можете указать порядок аспектов Spring Security, установив атрибут order в <security:global-method-security> (по умолчанию он равен нулю).

Вы также можете указать порядок вашего собственного аспекта, как описано в 7.2.4.7 Порядок заказа :

Совет с наивысшим приоритетом запускается первым «в пути» (поэтому, учитывая два фрагмента, предшествующих совету, первый с наивысшим приоритетом выполняется первым). «На выходе» из точки соединения последний совет с наивысшим приоритетом выполняется последним (поэтому, учитывая два фрагмента совета после, один с наивысшим приоритетом будет выполняться вторым). ...
Вы можете контролировать порядок исполнения, указав приоритет. Это делается обычным способом Spring, либо реализуя интерфейс org.springframework.core.Ordered в классе аспекта, либо аннотируя его аннотацией Order. Учитывая два аспекта, аспект, возвращающий более низкое значение из Ordered.getValue () (или значение аннотации), имеет более высокий приоритет.

...