当前位置: 首页 > 知识库问答 >
问题:

Spring:@PreAuthorize是否优先于@Cacheable?

淳于开畅
2023-03-14

我有一个关于Spring Security和Spring缓存的问题。假设我有一个方法,我已经用@PreAuthorize(“条件”)和@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安全检查将被评估,即使计算()函数的结果已经被计算和缓存?请记住,这个函数可以被用户A调用,然后存储在缓存中的值,然后另一个用户(用户B)执行要求再次调用这个函数的操作?是否会评估@PreAuthorize条件?

从Spring文档中我可以发现,@PreAuthorize和@Cacheable都将其建议的顺序定义为“Ordered.lower_priority”,我相信这意味着它们的评估顺序是未定义的?

谢谢

共有1个答案

养俊驰
2023-03-14

这两个代码

如果要确保安全检查总是在缓存检查“在进入时”之前进行,则应通过将order属性设置为较低的值来赋予它较高的优先级。

<security:global-method-security order="1">
 类似资料:
  • 问题内容: 我已经了解了Java 和接口之间的区别。从Java 1.5开始,已将其他功能添加到接口,并已调用这些功能以保持向后兼容性。 我的问题是,现在我们有了接口,我们应该一直使用吗?不使用和使用的用例是什么? 问题答案: 两者都有其用途,并且都由java.util.concurrent中的Executor框架支持。Runnable已经存在了更长的时间,但是它仍然在使用并且不被阻止。 可调用程序

  • 问题内容: 在Java中,重载该方法会产生不良的说唱效果,尽管我不明白为什么。诸如此类的类在Java 8和Java 10中都使用它来确保被调用。但是,引入了Java 9 ,它使用PhantomReference机制而不是GC终结。起初,我认为这只是将终结处理添加到第三方类中的一种方法。但是,其javadoc中给出的示例显示了一个用例,可以很容易地用终结器重写。 是否应该按照Cleaner 重写所有

  • 是否有可用于 Haskell 的斐波那契堆/优先级队列?(甚至是渐近更好的?我在这个问题中找到了各种优先级队列实现的列表,但我找不到它们中的任何一个是否满足斐波那契堆的摊销运行时间: < li>Find-minimum是O(1)摊销时间。 < li >操作insert、decrease key和merge (union) work是O(1)摊销时间。 < li >操作删除和删除最小值是O(log

  • 这些天,我阅读了一些关于和的文档。我了解到Javascript是一个单线程,每次只会执行一段代码。同时,如果有事件发生,它会被推送到事件队列中并阻塞,直到适当的时间。我想知道,当许多事件被阻塞等待同时执行时。这些事件是否具有不同的优先级,因此高优先级事件会在低优先级事件之前执行。或者只是一个FIFO队列。 在上面的代码中,setTimeout fn1将在10 ms发生,Click事件处理程序fn2

  • 执行时将检索哪个bean? 根据Spring文档: 每个bean都有一个或多个标识符。这些标识符在承载bean的容器中必须是唯一的。 我有两个或 在同一个XML文件中有两个元素。

  • 最近我发现有一种使用Spring Security预授权方法的方法。但我不确定我是否可以实现我想要的注释。