gpt4 book ai didi

java - 对于(未)验证的请求绕过 @Cacheable

转载 作者:行者123 更新时间:2023-11-30 03:07:34 27 4
gpt4 key购买 nike

Spring 的缓存框架能否了解请求上下文的身份验证状态,或者更容易推出自己的缓存解决方案?

最佳答案

尽管我发现这个用例 super 奇怪,但您可以为几乎任何与 SpEL 配合使用的内容设置缓存条件。由于您可以使用 SpEL 调用任何您想要的方法,所以您就可以开始了。

我意识到这比应有的困难,但以下方法有效。首先创建一个静态方法来执行检查(您可以使用SecurityContextHolder)

public class SecurityChecker {

public static boolean isSecured() {
// Whatever
return SecurityContextHolder.getContext().getAuthentication() != null;
}
}

然后在带注释的方法中指定以下内容(假设 myCache 应该受到影响):

@Cacheable(cacheNames = "myCache", condition = "T(com.example.SecurityChecker).isSecured()")
public Foo doIt(String key) { ... }

目前有两个问题:

  1. 您无法创建元注释来避免一遍又一遍地重复 condition 属性(请参阅 SPR-13475 )
  2. SpEL 设置不允许您轻松调用 bean 上的方法(这比调用静态方法更好)。我刚刚创建了SPR-13812为此

关于java - 对于(未)验证的请求绕过 @Cacheable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34366465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com