返回介绍

23. CacheManager 缓存管理

发布于 2020-09-17 05:39:53 字数 6033 浏览 1410 评论 0 收藏 0

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

  • CacheManager - 负责所有缓存的主要管理组件,它返回 Cache 实例。
  • Cache - 维护key/value 对。
  • CacheManagerAware - 通过想要接收和使用 CacheManager 实例的组件来实现。

CacheManager 返回Cache 实例,各种不同的 Shiro 组件使用这些Cache 实例来缓存必要的数据。任何实现了 CacheManagerAware 的 Shiro 组件将会自动地接收一个配置好的 CacheManager,该 CacheManager 能够用来获取 Cache 实例。

Shiro 的 SecurityManager 实现及所有 AuthorizingRealm 实现都实现了 CacheManagerAware 。如果你在 SecurityManager 上设置了 CacheManger,它反过来也会将它设置到实现了CacheManagerAware 的各种不同的 Realm 上(OO delegation)。例如,在 shiro.ini 中:

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) 方法能够被子类调用,用来清除特殊账户缓存的授权信息。它通常被自定义逻辑调用,如果与之匹配的账户授权数据发生了改变(来确保下次的授权检查能够捕获新数据)。

为文档加把手

我们希望这篇文档可以帮助你使用 Apache Shiro 进行工作,社区一直在不断地完善和扩展文档,如果你希望帮助 Shiro 项目,请在你认为需要的地方考虑更正、扩展或添加文档,你提供的任何点滴帮助都将扩充社区并且提升 Shiro。

提供你的文档的最简单的途径是将它发送到用户论坛邮件列表

译者注:如果对本中文翻译有疑议的或发现勘误欢迎指正,点此提问。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文