Shiro会话管理和加密

会话管理

Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如Tomcat),不管是J2SE还是J2EE环境都可以使用,提供了会话管理,会话事件监听,会话存储/持久化,容器无关的集群,失效/过期支持,对Web的透明支持,SSO单点登录的支持等特性

会话相关APL

  • Subject.getSession():获取会话,等价于Subject.getSession(true),即如果当前没有创建session对象会创建一个;Subject.getSession(false),如果当前没有创建session对象则返回null.
  • session.setAttribute(key,val):设置会话属性
  • session.getAttribute(key):获取会话属性
  • session.removeAttribute(key):删除会话属性

SessionDAO

在这里插入图片描述

Shiro提供SessionDAO用于会话持久化.提供CRUD操作
在实际开发中,如果要用到SessionDAO组件,可以自定义类实现自EnterpriseCacheSessionDAO类,为其注入sessionIdGenerator属性,如果用到缓存的话还可以注入一个缓存的实现,然后将这个SessionDAO组件注入给SessionManager(会话管理器),最后将SessionManager配置给SecurityManager。

缓存

使用Shiro-redis集成redis缓存

1.首先添加依赖

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

application.properties配置文件中添加Redis配置

# Redis 数据库索引(默认为0)
spring.redis.database=8
# Redis 服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis 服务器连接密码(默认为空)
spring.redis.password=root
#连接池最大连接数(使用负值表示没有限制) 默认8
spring.redis.lettuce.pool.max-active=8
#连接池最大阻塞等待时间(使用负值表示没有限制)默认 -1
spring.redis.lettuce。pool.max-wait=-1
#连接池中的最大空闲连接默认8
spring.redis.lettuce.pool.max-idle=8
#连接池中的最小空闲连接默认0
spring.redis.lettuce.pool.min-idle=0
#redis服务器超时时间
spring.redis.timeout=5000

编写ShiroConfig类

  • 注入Rrdis参数:@Value注解从application.properties配置文件中获取
  • 添加redisManager():创建RedisManager
  • 添加cacheManager():创建RedisCacheManager,注入RedisManager
  • 添加redisSessionDao():创建RedisSessionDAO,注入RedusSessionDAO
  • 修改myShiroRealm():创建MyShiroRealm,启用缓存
  • 修改securityManager():创建SecurityManager,注入MyShiroRealm,RedisCacheManager、SessionManager
package com.lei.demo.config.shiro;

import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
import com.lei.demo.pojo.SysRight;
import com.lei.demo.servic.RoleService;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
import org.crazycake.shiro.RedisCacheManager;
import org.crazycake.shiro.RedisManager;
import org.crazycake.shiro.RedisSessionDAO;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值