本系列博文目錄: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>