zoukankan      html  css  js  c++  java
  • Spring boot后台搭建二为Shiro权限控制添加缓存

    在添加权限控制后,添加方法 查看

    当用户访问”获取用户信息”、”新增用户”和”删除用户”的时,后台输出打印如下信息 ,

    Druid数据源SQL监控

    为了避免频繁访问数据库获取权限信息,在Shiro中加入缓存

    缓存有基于Redis和Ehcache的

    基于Redis

    1.Shiro集成Redis的引入依赖

    <dependency>
        <groupId>org.crazycake</groupId>
        <artifactId>shiro-redis</artifactId>
    </dependency>

    2.Redis配置

    spring.redis.host=localhost
    spring.redis.port=6379
    spring.redis.jedis.pool.max-active=8
    spring.redis.jedis.pool.max-wait=-1
    spring.redis.jedis.pool.max-idle=8
    spring.redis.jedis.pool.min-idle=0
    spring.redis.timeout=0

    3.在ShiroConfig中配置Redis

    public RedisManager redisManager() {
        RedisManager redisManager = new RedisManager();
        return redisManager;
    }
    
    public RedisCacheManager cacheManager() {
        RedisCacheManager redisCacheManager = new RedisCacheManager();
        redisCacheManager.setRedisManager(redisManager());
        return redisCacheManager;
    }

    在SecurityManager中加入RedisCacheManager

    @Bean
        public SecurityManager securityManager() {
            DefaultWebSecurityManager securityManager =  new DefaultWebSecurityManager();
            ……
            securityManager.setCacheManager(cacheManager());
            return securityManager;
        }

    4.测试

    启动项目

    访问访问”获取用户信息”、”新增用户”和”删除用户”,后台只打印一次获取权限信息

    Druid数据源SQL监控

     

    基于Ehcache

    1.添加依赖

    <!-- shiro ehcache -->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-ehcache</artifactId>
        <version>1.4.1</version>
    </dependency>
    <!-- ehchache -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
    </dependency>

    2.添加配置

    srcmain esourcesconfig下添加shiro-ehcache.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
             updateCheck="false">
        <diskStore path="java.io.tmpdir/Tmp_EhCache"/>
        <defaultCache
                maxElementsInMemory="10000"
                eternal="false"
                timeToIdleSeconds="120"
                timeToLiveSeconds="120"
                overflowToDisk="false"
                diskPersistent="false"
                diskExpiryThreadIntervalSeconds="120"/>
    
        <!-- 登录记录缓存锁定1小时 -->
        <cache
                name="passwordRetryCache"
                maxEntriesLocalHeap="2000"
                eternal="false"
                timeToIdleSeconds="3600"
                timeToLiveSeconds="0"
                overflowToDisk="false"
                statistics="true"/>
    </ehcache>

    3.在ShiroConfig中

      注入Ehcache缓存

      添加getEhCacheManager()

    @Bean
    public EhCacheManager getEhCacheManager() {
         EhCacheManager em = new EhCacheManager();
         em.setCacheManagerConfigFile("classpath:config/shiro-ehcache.xml");
         return em;
    }

      将缓存对象注入到SecurityManager中

      修改securityManager()

    @Bean
        public SecurityManager securityManager() {
            DefaultWebSecurityManager securityManager =  new DefaultWebSecurityManager();
            securityManager.setRealm(myShiroRealm());
            securityManager.setRememberMeManager(rememberMeManager());
            securityManager.setCacheManager(getEhCacheManager());
            return securityManager;
        }

    4.测试

      启动项目,分别访问访问”获取用户信息”、”新增用户”,只获取一次权限信息

  • 相关阅读:
    动画效果
    iOS蓝牙4.0
    讯飞语音接口使用
    Xcode添加注释
    CocoaPods安装
    mac os 下打开FTP服务器
    画面渲染:实时渲染(Real-time Rendering)、离线渲染(Offline Rendering)[转]
    Unity3D笔记 英保通九 创建数
    Unity3D笔记 英保通八 关节、 布料、粒子系统
    Unity3D 记第二次面试
  • 原文地址:https://www.cnblogs.com/baby123/p/11113187.html
Copyright © 2011-2022 走看看