Cache Manager

Shiro 具有三个重要的缓存接口:

CacheManager返回Cache实例,各种 Shiro 组件根据需要使用这些Cache<实例来缓存数据。任何四郎

实现CacheManager的组件将自动接收已配置的CacheManager,可在其中使用它来获取Cache实例。

Shiro SecurityManager实现和所有AuthorizingRealm实现都实现 CacheManagerAware。如果在SecurityManager上设置CacheManager,它将依次在实现 CacheManagerAware(OO 委托)的各个领域上进行设置。例如,在 shiro.ini 中:

示例 shiro.ini CacheManager 配置

securityManager.realms = $myRealm1, $myRealm2, ..., $myRealmN
...
cacheManager = my.implementation.of.CacheManager
...
securityManager.cacheManager = $cacheManager
# at this point, the securityManager and all CacheManagerAware
# realms have been set with the cacheManager instance

我们提供了一个现成的EhCacheManager实现,因此您今天可以使用它。否则,您可以实现自己的CacheManager(例如,使用 Coherence 等)并将其配置为上面的代码,那么您会很方便。

授权缓存无效

最后请注意,AuthorizingRealm具有clearCachedAuthorizationInfo方法,子类可以调用clearCachedAuthorizationInfo方法来逐出特定帐户的缓存 authzInfo。如果相应帐户的 authz 数据已更改,则通常由自定义逻辑调用(以确保下一次 authz 检查将获取新数据)。

协助处理文档

尽管我们希望该文档对您使用 Apache Shiro 所做的工作有所帮助,但社区一直在不断改进和扩展文档。如果您想为 Shiro 项目提供帮助,请考虑在需要的地方更正,扩展或添加文档。您提供的每一点帮助都会扩大社区,进而改善 Shiro。

贡献文档的最简单方法是将其发送到User Forum用户邮件列表