缓存
CacheManagerAware接口
Shiro内部响应的组件(DefaultSecurityManager)会自动检测响应的对象(如Realm)是否实现了CacheManagerAware
并自动注入响应的CacheManager
。
Realm(举例)
我们写的Realm是继承自AuthorizingRealm
的,它的父类CachingRealm
是实现了CacheManagerAware
接口的,所以授权和验证都是可以被缓存的,只需要配置cacheManager
,加入相对应的Jar包和配置文件即可。
<bean id="cacheManager"
class="org.apache.shiro.cache.ehcache.EhCacheManager">
<property name="cacheManagerConfigFile"
value="classpath:ehcache.xml" />
</bean>
测试
在授权方法doGetAuthorizationInfo
打断点,进入调试模式,第一次登录后,再次点击需要授权才能访问的页面,没有触发断点,说明该授权信息是被缓存了,即不用再次授权。
当我们把applicationContext.xml
中的配置文件cacheManager
的相关配置去掉,再次进行上述操作。
发现每次进入需要授权的页面,都需要调用一次doGetAuthorizationInfo
方法,即授权信息没有被缓存。