本系列博文目录:http://www.javashuo.com/article/p-ewndobct-kn.htmljava
本篇文章咱们使用Ehcache做为Cache实现进行配置。linux
maven坐标spring
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.2.4</version> </dependency>
shiro有两种缓存 Realm缓存 和 Session缓存apache
这里的写法是spring boot的shiro配置文件windows
/** * 建立EhCache缓存类 * @return */ @Bean(name = "shiroCacheManager") public EhCacheManager shiroCacheManager() { EhCacheManager ehCacheManager = new EhCacheManager(); ehCacheManager.setCacheManagerConfigFile("classpath:shiro-ehcache.xml");//指定缓存配置文件路径 return ehCacheManager; } /** * 建立安全认证资源类 * (本身实现的登录和受权认证规则) */ @Bean(name = "shiroRealm") public ShiroRealm shiroRealm(EhCacheManager shiroCacheManager) { ShiroRealm realm = new ShiroRealm(); realm.setCacheManager(shiroCacheManager); //为资源类配置缓存 return realm; } /** * 建立默认的安全管理类 * 整个安全认证流程的管理都由此类负责 */ @Bean(name = "securityManager") public DefaultWebSecurityManager securityManager(ShiroRealm shiroRealm,EhCacheManager shiroCacheManager) { DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); //建立安全管理类 defaultWebSecurityManager.setRealm(shiroRealm); //指定资源类 defaultWebSecurityManager.setCacheManager(shiroCacheManager);//为管理类配置Session缓存 return defaultWebSecurityManager; }
<?xml version="1.0" encoding="UTF-8"?> <ehcache name="shiro-ehcache"> <!-- 缓存文件存放目录 --> <!-- java.io.tmpdir表明操做系统默认的临时文件目录,不一样操做系统路径不一样 --> <!-- windows 7 C:\Users\Administrator\AppData\Local\Temp --> <!-- linux /tmp --> <diskStore path="${java.io.tmpdir}/shiro/ehcache"/> <!-- 设置缓存规则--> <!-- maxElementsInMemory:缓存文件在内存上最大数目 maxElementsOnDisk:缓存文件在磁盘上的最大数目 eternal:缓存是否永不过时。true永不过时,false会过时 timeToIdleSeconds :缓存最大空闲时间,空闲超过此时间则过时(单位:秒)。当eternal为false时有效 timeToLiveSeconds :缓存最大的生存时间,从建立开始超过这个时间则过时(单位:秒)。当eternal为false时有效 overflowToDisk:若是内存中数据超过内存限制,是否缓存到磁盘上 diskPersistent:是否在磁盘上持久化缓存,系统重启后缓存依然存在 --> <defaultCache maxElementsInMemory="1000" maxElementsOnDisk="10000" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" diskPersistent="false"/> </ehcache>