南宁cms建站,网站平台需要做无形资产吗 怎么做6,韶关网站建设,做网站建设要学多久shiro整合redis
前言#xff1a;shiro默认的session是存储在jvm内存中的#xff0c;这样会导致java服务内存占用更大以及一旦服务器宕机或者版本迭代需要重启服务时#xff0c;缓存中的数据不能恢复#xff0c;导致用户需要重新登录认证#xff0c;体验很差。因此利用第三…shiro整合redis
前言shiro默认的session是存储在jvm内存中的这样会导致java服务内存占用更大以及一旦服务器宕机或者版本迭代需要重启服务时缓存中的数据不能恢复导致用户需要重新登录认证体验很差。因此利用第三方服务作为缓存十分重要。
shiro有相关的shiro-redis整合的依赖包使用起来也十分方便下面就介绍下使用方法 本文前提是已搭建好shiro的简单框架配置好realm以及配置类设置好SecurityManager等 1.引入shiro-redis依赖 !-- shiro --dependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring/artifactIdversion1.13.0/version/dependency !-- shiro-redis --dependencygroupIdorg.crazycake/groupIdartifactIdshiro-redis/artifactIdversion3.3.1/version/dependency2.配置redis数据源
其实不需要配置因为在下面的RedisManager是直接将参数设置进入的yaml文件的配置并不生效。
但是因为其他业务也可能用到redis所以在yaml中配置下面的RedisManager可以通过Value(“$spring.redis.xxx”)进行引入避免撤换redis数据源时需要修改多处地方。
spring:redis:host: 127.0.0.1port: 6379database: 0jedis:pool:max-idle: 8min-idle: 0max-active: 8max-wait: -1timeout: 03.配置ShiroConfig类
在ShiroConfig类中将redis设置为session的缓存在原有基础上添加以下代码 /*** redisManager* return*/public RedisManager redisManager() {RedisManager redisManager new RedisManager();// 高版本的shiro-redis取消setPort方法需要将Port和Host写在一起redisManager.setHost(127.0.0.1:6379);// 配置过期时间redisManager.setTimeout(1800);return redisManager;}/*** cacheManager* return*/public RedisCacheManager cacheManager() {RedisCacheManager redisCacheManager new RedisCacheManager();redisCacheManager.setRedisManager(redisManager());return redisCacheManager;}/*** redisSessionDAO*/public RedisSessionDAO redisSessionDAO() {RedisSessionDAO redisSessionDAO new RedisSessionDAO();redisSessionDAO.setRedisManager(redisManager());return redisSessionDAO;}/*** sessionManager*/public DefaultWebSessionManager SessionManager() {DefaultWebSessionManager sessionManager new DefaultWebSessionManager();sessionManager.setSessionDAO(redisSessionDAO());return sessionManager;}然后在之前的配置上将session管理器和cache管理器注入到SecurityManager中 /*** 配置SecurityManager* param myRealm* return*/Beanpublic SecurityManager securityManager(Realm myRealm){DefaultWebSecurityManager securityManager new DefaultWebSecurityManager();//设置一个Realm这个Realm是最终用于完成我们的认证号和授权操作的具体对象securityManager.setRealm(myRealm);securityManager.setSessionManager(sessionManager());securityManager.setCacheManager(cacheManager());return securityManager;}4.测试
保证redis参数正常连接正常启动项目
访问登录连接
redis被成功写入见下图 经过在doGetAuthenticationInfo方法和doGetAuthorizationInfo方法中设置简单输出语句发现只在第一次登录时进入认证方法第一次授权时进入授权方法。后续都不再进入该方法。
至此ShiroRedis集成完毕