标签:
CacheManager 返回Cache 实例,各种不同的Shiro 组件使用这些Cache 实例来缓存必要的数据。任何实现了 CacheManagerAware 的 Shiro 组件将会自动地接收一个配置好的 CacheManager,该 CacheManager 能够用来获取 Cache 实例。
- CacheManager - 负责所有缓存的主要管理组件,它返回 Cache 实例。
- Cache - 维护key/value 对。
- CacheManagerAware - 通过想要接收和使用 CacheManager 实例的组件来实现。
- 在application-shiro.xml(shiro的配置文件):
<span style="font-family:FangSong_GB2312;"><!-- shiro的缓存管理器,然后需要将缓存管理器注入 到安全管理其中 --> <bean id="shiroEhcacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"> <!--classpath是缓存属性的配置文件 --> <property name="cacheManagerConfigFile" value="classpath:config/ehcache-shiro.xml" /> </bean></span>
<span style="font-family:FangSong_GB2312;"><!-- shiro管理中心类 start--> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="shiroRealm"></property> <property name="subjectFactory" ref="casSubjectFactory"></property> <!--注入缓存管理器 --> <property name="cacheManager" ref="shiroEhcacheManager"></property> </bean></span>
- 缓存属性配置文件:
<span style="font-family:FangSong_GB2312;"><ehcache updateCheck="false" name="shiroCache"> <defaultCache <!--最大缓存数量 --> maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" /> </ehcache></span>
<span style="font-family:FangSong_GB2312;"><!-- 过滤器链,请求url对应的过滤器 --> <property name="filterChainDefinitions"> <value> /message.jsp=anon <!-- 退出地址,交给logout过滤器处理 --> /logout=logout /shiro-cas=casFilter /** =user </value> </property></span>对于第二个问题,也就说如何解决缓存同步。目前我自己还没有好的解决方案,有知道的麻烦,教教我。这里,我只能是粗暴的选择,不使用缓存。网上有解决方案,我还需要研究研究。
标签:
原文地址:http://blog.csdn.net/zhuojiajin/article/details/43314983