У меня есть вопрос о Spring Security и Spring Caching. Скажем, у меня есть метод, и я аннотированный метод с @PreAuthorize ("состояние") и @Cacheable (...), как этотВесна: @PreAuthorize имеет преимущество над @Cacheable?
@PreAuthorize("some authorization check")
@Cacheable(....)
public String calculate() {
....
}
Does @PreAuthorize (http://docs.spring.io/spring-security/site/docs/3.0.x/reference/ns-config.html) принимают precendence над @Cacheable (http://docs.spring.io/spring/docs/3.1.0.M1/spring-framework-reference/html/cache.html)? Гарантирует ли система, что проверка безопасности @PreAuthorize будет оцениваться, даже если результат функции calculate() уже был рассчитан и кэширован? Пожалуйста, имейте в виду, что эта функция может быть вызвана, скажем, пользователем A, затем значением, хранящимся в кеше, а затем другой пользователь (пользователь B) выполняет действие, требующее повторной вызова этой функции? Будет ли оцениваться условие @PreAuthorize или нет?
Из-за того, что я могу найти в Documenation Spring, как @PreAuthorize, так и @Cacheable имеют порядок их рекомендаций, определенных как «Ordered.LOWEST_PRECEDENCE», что, я считаю, означает, что порядок, в котором они оцениваются, не определен ?
Спасибо!
Спасибо. Но разве это не то, что следует упомянуть в весенней документации по кешированию? Я думаю, что игнорирование других аннотаций по методу довольно серьезно. Во всяком случае, я уже установил атрибут заказа как для кеша, так и для метода global-method-security, мне просто интересно, возможно ли, что проверки @PreAuthorize были выполнены каким-то другим способом, который гарантирует их оценку. – 0x42