Shiro快速入門 —— 7.緩存

本系列博文目錄:http://www.javashuo.com/article/p-ewndobct-kn.htmljava

 

本篇文章咱們使用Ehcache做爲Cache實現進行配置。linux

引入所需jar包

maven座標spring

<dependency>
	<groupId>org.apache.shiro</groupId>
	<artifactId>shiro-ehcache</artifactId>
	<version>1.2.4</version>
</dependency>

 

shiro配置

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;
    }

 

Ehcache配置

<?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>
相關文章
相關標籤/搜索