7. Shiro缓存

CacheManagerAware接口

Shiro内部相应的组件(DefaultSecurityManager)会自动检测相应的对象(如Realm)是否实现了CacheManagerAware并自动注入相应的CacheManager,说白了就是这个对象可以使用缓存了。

Realm缓存

Shiro提供了CachingRealm,其实现了CacheManagerAware接口,提供了缓存的一些基础实现;AuthenticatingRealm及AuthorizingRealm也分别提供了对AuthenticationInfo和AuthorizationInfo信息的缓存。

所以Realm实际上是有缓存的,登录验证通过之后,第一次访问需要授权访问的页面是需要realm验证的,但是之后再访问这个页面就不需要再调用realm的授权方法处理,因为这个数据已经被缓存了。

Session缓存

如SecurityManager实现了SessionSecurityManager,其会判断SessionManager是否实现了CacheManagerAware接口,如果实现了会把CacheManager设置给它。

SessionManager也会判断相应的SessionDAO(如继承自CachingSessionDAO)是否实现了CacheManagerAware,如果实现了会把CacheManager设置给它。

设置了缓存的SessionManager,查询时先会查缓存,如果找不到才查数据库。

推荐阅读更多精彩内容

  • shiro介绍 Apache shiro是一个权限控制框架,它将安全认证抽取出来,实现用户身份认证,权限授权,加密...
    放开那个BUG阅读 2,624评论 0 29
  • shiro权限框架课程目标精讲篇(1)shiro初识,全面介绍架构精讲篇shiro三大核心组件介绍精讲篇shiro...
    Grady_Camel阅读 248评论 2 5
  • 手摸手教你SSM框架整合Shiro后的开发 前面,我们学习了Shiro实现权限管理之表结构设计以及JQuery-Z...
    TyCoding阅读 4,591评论 2 47
  • 一 、Shiro入门 1.简介 Apache Shiro 是 Java 的一个安全(权限)框架。 Shiro 可以...
    TiaNa_na阅读 437评论 0 5
  • Shiro的功能模块 Authentication:身份认证/登录,验证用户是不是拥有相应的身份。 Authori...
    jiahzhon阅读 13评论 0 0