当前位置: 首页> 科技> 数码 > 企业网站网页设计费用_疫情的最新消息_青岛做网站推广_电商运营推广是做什么的

企业网站网页设计费用_疫情的最新消息_青岛做网站推广_电商运营推广是做什么的

时间:2025/8/12 7:32:52来源:https://blog.csdn.net/weixin_50989469/article/details/140989447 浏览次数:0次
企业网站网页设计费用_疫情的最新消息_青岛做网站推广_电商运营推广是做什么的

文章目录

    • 前言
    • 一、若依shiro框架登录流程概述
      • 1.登录入口
      • 2.UserRealm下的登录认证方法
      • 3.ShiroConfig配置说明
      • 4.OnlineSessionDAO类
    • 二、开始改造
      • 1.导入依赖
      • 2.yml加入配置,让redis来接管session
      • 3.重构OnlineSessionDAO类(核心)
      • 4.ShiroService新增方法通过会话序号删除信息
      • 5.ShiroConfig下配置RedisManager
      • 6.项目启动
      • 7.nginx集群配置
      • 8.结果验证

前言

        若依前后端不分离基础项目,使用shiro框架作为授权和认证的安全框架。对比前后端分离项目的token验证机制,不分离项目仍然采用的是cookie + session的组合,浏览器存储的cookie与服务端的session进行校验。

        项目集群方案,前后端分离项目有着天然的优势,前后端不分离项目就要考虑session共享的问题了。因为session机制对于单机应用是没问题的,在集群环境下,当请求被分配到另一台服务器时,新的服务器无法通过浏览器传入的cookie值取到session,这样登录状态就会验证失败。以若依shiro前后端不分离项目为例,核心是通过redis进行session共享来解决。

一、若依shiro框架登录流程概述

先梳理明白登录认证的流程,了解shiro安全认证的机制,才好改造,不然流程都糊里糊涂的,肯定会有一大堆问题。

1.登录入口

在这里插入图片描述

2.UserRealm下的登录认证方法

在这里插入图片描述

3.ShiroConfig配置说明

在这里插入图片描述

安全管理器

在这里插入图片描述

会话管理器

在这里插入图片描述

最后,Shiro过滤器配置没什么说的

4.OnlineSessionDAO类

存储会话session信息,继承自org.apache.shiro.session.mgt.eis包下的EnterpriseCacheSessionDAO类,并重写doReadSession(获取会话)、doDelete(会话停止时删除会话)方法。

在这里插入图片描述
在这里插入图片描述

二、开始改造

基本登录流程梳理清楚之后,就要开始着手改造了。

1.导入依赖

pom文件中导入spring-session-data-redis和shiro-redis的依赖

在这里插入图片描述

另外,spring-boot-devtools热部署的依赖需要注释掉,不然会报OnlineSession转换失败的错误

在这里插入图片描述

2.yml加入配置,让redis来接管session

在这里插入图片描述

3.重构OnlineSessionDAO类(核心)

原来继承自org.apache.shiro.session.mgt.eis包下的EnterpriseCacheSessionDAO类,现在改为继承org.crazycake.shiro包下的RedisSessionDAO类,并且重写update、delete、doCreate、doReadSession方法,如下:

public class OnlineSessionDAO extends RedisSessionDAO
{/*** 同步session到数据库的周期 单位为毫秒(默认1分钟)*/@Value("${shiro.session.dbSyncPeriod}")private int dbSyncPeriod;/*** 上次同步数据库的时间戳*/private static final String LAST_SYNC_DB_TIMESTAMP = OnlineSessionDAO.class.getName() + "LAST_SYNC_DB_TIMESTAMP";/*** SESSION 超时时间*/public static final int SESSION_TIME_OUT = 8 * 60 * 60;/*** SESSION会话*/public final static String CACHE_SESSION = "CACHE:SESSION:";private RedisSerializer valueSerializer = new ObjectSerializer();@Autowiredprivate SysShiroService sysShiroService;@Autowiredprivate StringRedisTemplate redisTemplate;public OnlineSessionDAO()
关键字:企业网站网页设计费用_疫情的最新消息_青岛做网站推广_电商运营推广是做什么的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: