Shiro快速入门 —— 7.缓存

本系列博文目录:https://my.oschina.net/u/3452433/blog/907396

 

本篇文章我们使用Ehcache作为Cache实现进行配置。

引入所需jar包

maven坐标

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

 

shiro配置

shiro有两种缓存 Realm缓存 和 Session缓存

这里的写法是spring boot的shiro配置文件

    /**
     * 创建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>

 

 

转载于:https://my.oschina.net/u/3452433/blog/903145

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值