gpt4 book ai didi

spring-security - 带有 EhCache 3 的 Spring Security ACL

转载 作者:行者123 更新时间:2023-12-03 16:51:05 25 4
gpt4 key购买 nike

我尝试更新到 EhCache 3,但注意到我的 spring-security-acl 的 AclConfig 不再有效。原因是EhCacheBasedAclCache仍在使用 import net.sf.ehcache.Ehcache . EhCache 移至 org.ehcache从第 3 版开始,因此这不再有效。 spring 是否为 EhCache 3 提供了替换类,或者我是否需要实现自己的 Acl 缓存?
这是代码,不再起作用:

@Bean
public EhCacheBasedAclCache aclCache() {
return new EhCacheBasedAclCache(aclEhCacheFactoryBean().getObject(),
permissionGrantingStrategy(), aclAuthorizationStrategy());
}

最佳答案

我为您的问题增加了赏金,因为我也在寻找更权威的答案。
这是一个有效的解决方案,但可能有更好的方法,并且可以专门针对 acl 调整缓存设置。

1) JdbcMutableAclService接受任何 AclCache实现,而不仅仅是 EhCacheBasedAclCache .立即可用的实现是 SpringCacheBasedAclCache .你也可以实现自己的。

2) 在您的项目中启用 ehcache3,使用 Spring Cache 作为抽象。在 Spring Boot 中,这就像使用 @EnableCache 一样简单。注解。然后添加@Autowired CacheManager cacheManager在您的 bean 配置类中。

3) 使用 aclCache 的条目更新您的 ehcache3.xml
注意 - key 是 Serializable因为 Spring acl 插入了以 Long 和 ObjectIdentity 为键的缓存条目:)

    <cache alias="aclCache">
<key-type>java.io.Serializable</key-type>
<value-type>org.springframework.security.acls.model.MutableAcl</value-type>
<expiry>
<ttl unit="seconds">3600</ttl>
</expiry>
<resources>
<heap unit="entries">2000</heap>
<offheap unit="MB">10</offheap>
</resources>
</cache>

4) 更换您的 EhCacheBasedAclCache bean 带 SpringCacheBasedAclCache像这样:
    @Bean
public AclCache aclCache() {
return new SpringCacheBasedAclCache(
cacheManager.getCache("aclCache"),
permissionGrantingStrategy(),
aclAuthorizationStrategy());
}

5) 使用 aclCache()JdbcMutableAclService构造函数

关于spring-security - 带有 EhCache 3 的 Spring Security ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157479/

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