重启项目后Session依旧存在的问题研究

1. 背景

最近在开发对接智谱AI超拟人大模型,放了方便在pom.xml中引入了热部署相关的依赖。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

登录校验基于Session,把登录的用户信息保存到Session对象中。

@PostMapping("/login")
public BaseResponse login(HttpServletRequest request, @RequestBody User user) {if (user != null && StringUtils.isNotBlank(user.getName()) && StringUtils.isNotBlank(user.getPassword())) {String name = user.getName();String password = user.getPassword();User tempUser = userService.login(name, SecureUtil.md5(password));if (tempUser != null) {Map<String, String> map = new HashMap<>();map.put("id", String.valueOf(tempUser.getId()));map.put("name", tempUser.getName());map.put("email", tempUser.getEmail());map.put("phone", tempUser.getPhone());// 保存用户的登录状态HttpSession session = request.getSession(true);session.setAttribute("user", tempUser);return BaseResponse.success(map);} else {return BaseResponse.error(ErrorCode.USERNAME_PASSWORD_ERROR);}}return BaseResponse.error(ErrorCode.MISS_PARAMS);
}

然后在拦截器中判断能否从这个Session对象中获取对用户信息,如果可以就放行,否则拦截。

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession(true);Object user = session.getAttribute("user");if (user != null) {return true;}request.getRequestDispatcher("/error/login").forward(request, response);return false;
}

2. 问题

首先我们第一次启动项目后,登录进入系统,然后重启项目,不用重新请求登录接口,直接就可以访问其它接口。

也就是这个Session在项目重启之后还存在,即Session持久化到硬盘中了,才会导致每次重启项目之后这个Session还存在的问题。

3. 解决问题

3.1 解决方式一

修改application.yml配置文件

server:servlet:session:persistent: false

注入persistent的值为false,也就是不持久化。

注意:其实内部默认值就是false,是引入的依赖中修改了这个值,所以导致内部值自动变为true,从而导致的重启项目之后还会存在上次登录的Session信息。

3.2 解决方式二

注意:去掉依赖之后一定要记得点击右侧的刷新按钮,不要没点击刷新就直接点击clean,这样是没有效果的,项目内部还是会存在这两个依赖。

image-20240206173943308
更多内容欢迎访问博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/478125.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4G/5G卡使用 EC200-CN

在串口中查看4G卡网口如下为enx020c29a39b6d 输入如下命令启动自动获取3s后按ctrlc 输入minicom -D /dev/ttyUSB2后先输入&#xff1a; ATE1启动回显。 ATqnetdevctl1,1,1播号回复ok表示成功。 查看ip已成功获取

SpringBoot日期格式全网最全

前言 SpringBoot默认的时期返回格式是2024-02-19T05:56:12.000+00:00这种,当然这也是分什么类型的,比如Date类型的SpringBoot默认返回2024-02-19T05:56:12.000+00:00,LocalDateTime类型的SpringBoot默认返回2024-02-24T13:56:15 那么这种格式在我们日常开发中不管是可读性…

linux基础学习(10):基本权限与相关命令

1.基本权限 用ls -l查看当前目录文件时&#xff0c;可以看到文件的基本权限 其由10位组成&#xff0c;其中&#xff1a; 第1位&#xff1a;代表文件类型。 - d lbc普通文件目录文件软链接文件块设备文件&#xff0c;也就是硬盘等存储设备的文件字符设备文件&#xff0c;是鼠…

Vue常用内置指令,代码Demo演示和讲解

文章目录 一、v-text二、v-html三、v-bind四、v-model五、v-on六、v-show七、v-if、v-else八、v-for九、v-cloak 一、v-text 作用&#xff0c;更改标签的显示值使用 v-text 会读取 data中的变量值如果变量存在替换原来的值&#xff0c;如果不存在则报错 <!DOCTYPE html>…

Python实现时间序列分析指数平滑模型(ExponentialSmoothing算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中的指数平滑模型&#xff08;Exponential Smoothing&#xff09;是一种统计预测方法&…

网络安全综合实验

1.实验拓扑 在这里注意因为第四个要求配置双击热备&#xff0c;我们可以第一时间配置&#xff0c;避免二次重复配置消耗时间 4、FW1和FW3组成主备模式的双机热备 具体配置位置在系统-->高可靠性-->双机热备-->配置 这里上行链路有两组&#xff0c;分别为电信和移动&…

Java的Lock

写在前面 Java本身提供了很多的锁。每种锁因其特性的不同。在不同的场景能展现出不同效率。 Java中往往是按照是否含有某一种特性来定义锁。通过特性将锁分类,再使用对比的方式来看 1 乐观锁和悲观锁 乐观锁和悲观锁是一种广义上的概念,提现了看待线程同步的不同角度。在Ja…

【C++ QT项目3】——网络调试助手的设计与实现

【C QT项目3】——网络调试助手的设计与实现 1 TCP网络调试助手1.1 项目整体开发流程1.2 QTtcp服务器的关键流程1.3 QTtcp客户端的关键流程1.4 UI界面的设计1.5 TCP协议理论知识1.6 Socket网络通信理论 2 网络通信核心代码2.1 TCP服务端连接的核心代码2.2 TCP服务端的数据通信核…

如何使用Pycharm中的image模块以及导入打开图片(属性)

在学习pytorch深度学习的过程中&#xff0c;通常会使用到大量的数据集&#xff0c;包括训练集和测试集。 以下是pytorch加载数据集的流程&#xff1a; 在notebook中使用help方法查看Dataset类的功能以及操作&#xff1a; 使用dataset需要继承Dataset父类 重写__getitem__方法和…

测试开发【Mock平台】12基础:拦截器服务实现(三) 接口匹配逻辑

【Mock平台】为系列测试开发教程&#xff0c;从0到1编码带你一步步使用Spring Boot 和 Antd React框架完成搭建一个测试工具平台&#xff0c;希望作为一个实战项目对各位的测试开发学习之路有帮助&#xff0c;关注公众号发送“mock”获取github项目源码地址&#xff0c;大奇一个…

如何确定分库还是 分表?

分库分表 分库分表使用的场景不一样&#xff1a; 分表因为数据量比较大&#xff0c;导致事务执行缓慢&#xff1b;分库是因为单库的性能无法满足要求。 分片策略 1、垂直拆分 水平拆分 3 范围分片&#xff08;range&#xff09; 垂直水平拆分 4 如何解决数据查询问题&a…

数据可视化利器:五款必备工具推荐

在数据可视化的世界里&#xff0c;工具的选择往往决定了工作的效率和效果。作为一名资深的数据可视化用户&#xff0c;我尝试并使用了众多的数据可视化工具。今天&#xff0c;我想向大家推荐五款我认为最好用、最实用的数据可视化工具。 1. 山海鲸可视化 山海鲸可视化以其强大…