春季:@PreAuthorize是否优先于@Cacheable?
作者:互联网
我对Spring Security和Spring Caching有疑问.说我有一个方法,并用@PreAuthorize(“ condition”)和@Cacheable(…)注释了该方法,就像这样
@PreAuthorize("some authorization check")
@Cacheable(....)
public String calculate() {
....
}
@PreAuthorize(http://docs.spring.io/spring-security/site/docs/3.0.x/reference/ns-config.html)是否优先于@Cacheable(http://docs.spring.io/spring/docs/3.1.0.M1/spring-framework-reference/html/cache.html)?框架是否保证将对@PreAuthorize安全检查进行评估,即使calculate()函数的结果已经被计算和缓存了?请记住,可以由用户A调用此函数,然后由缓存中存储的值调用,然后另一个用户(用户B)执行需要再次调用此函数的操作?是否会评估@PreAuthorize条件?
从我在Spring文档中可以找到的内容,@ PreAuthorize和@Cacheable的建议顺序都定义为“ Ordered.LOWEST_PRECEDENCE”,我认为这意味着它们的评估顺序是不确定的?
谢谢!
解决方法:
< security:global-method-security>和< cache:annotation-driven>启用@PreAuthorize和@Cacheable批注的标签具有一个order属性,该属性确定其AOP建议的执行优先级.
如果要确保安全检查始终在“进行中”高速缓存检查之前进行,则应通过将order属性设置为较低的值来为其赋予较高的优先级.
<security:global-method-security order="1">
标签:spring-cache,spring-security,spring,spring-mvc 来源: https://codeday.me/bug/20191029/1963840.html