shiro缓存Ehcache

缓存

什么是缓存

服务器中内存中开启的一部分空间

作用

用于存储经常被使用且不常改变的数据

为什么要使用缓存

  • 相对于读取磁盘的读取速度快
  • 访问量大的情况下减少服务器读取磁盘压力

shiro缓存Ehcache

shiro用于认证和授权,每次访问都会读取数据库中的数据,这样就会增加数据库压力

为了减轻数据库压力可以将认证和授权的数据存储在缓存中

工作流程

整合EhCache

添加依赖

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

开启缓存配置

认证和授权操作都是在Realm中完成的,缓存的配置应该在Realm对象上做配置

ShiroConfig的配置类中完成

复制代码
//Realm 需要自定义
    @Bean
    public ShiroRealm shiroRealm() {
        // 配置 Realm
        ShiroRealm shiroRealm = new ShiroRealm();

        //修改密码匹配器
        HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
        hashedCredentialsMatcher.setHashAlgorithmName("MD5");
        shiroRealm.setCredentialsMatcher(hashedCredentialsMatcher);

        //配置缓存 
        //设置缓存管理器
        shiroRealm.setCacheManager(new EhCacheManager());
        //开启缓存
        shiroRealm.setCachingEnabled(true);
        //开启认证缓存
        shiroRealm.setAuthenticationCachingEnabled(true);
        //设置认证缓存名
        shiroRealm.setAuthenticationCacheName("authenticationCache");
        //开启授权缓存
        shiroRealm.setAuthorizationCachingEnabled(true);
        //设置授权缓存名
        shiroRealm.setAuthorizationCacheName("authorizationCache");
        return shiroRealm;
    }
复制代码

测试

为什么只有认证的缓存被创建?授权的缓存呢???

通过debug发现,在服务器启动时授权的缓存就会被创建

这样的话,服务器重启的话,EhCache缓存中的数据就会没了,想让缓存中的数据不会因为服务器的重启而丢失,可以使用Redis来实现。

 

posted @   一杯水M  阅读(385)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示