(黑马点评项目)idea工具Debug启动,前端调用接口请求session拿不到值问题(排查问题复盘)

本文记录了一次利用下班时间解决好友项目的Bug经历,问题在于通过session保存值到Cookie实现用户登录时,在Debug模式下值无法被正确读取。文章详细介绍了从不同角度排查此问题的过程,并最终确定为前端超时设置与浏览器缓存导致的问题。

问题:就在昨晚利用下班时间,帮助好友解决了一个Bug,问题是这样:通过session将值保存到Cookie中实现用户的登录,但是在用Debug启动走断点的时候发现session能保存进去,但是调用login接口是却拿不到值,一直为null,(日志输出为null)但是run启动就能拿到值,成功登录,(日志输出有值)

目录

1.思考是不是正常run启动和Debug启动两种启动方式不一样

2.在nginx里查看超时时间,

3.突然想到也可以在前端加超时时间(有用)

4.清除缓存


问题排查经过:

1.思考是不是正常run启动和Debug启动两种启动方式不一样

经过查阅资料,确实有不一样,但是经过验证很快就推翻了这条思路

验证:因为两种方式启动之后,只要Debug快速的走完断点,就能登录成功

这时候突然看到这个

这里基本就能确定应该是设置了超时时间

2.在nginx里查看超时时间,

并将超时时间全部加到20000ms

验证:还是没用

3.突然想到也可以在前端加超时时间(有用)

因为前端项目不是我做的(具体也不知道在哪里找),但是这种超时时间大概率会以全局方式进行设置,所以只要找公共的文件配置就行,看到2000基本确定就是这了,加到20000改完之后

验证:还是没用,我懵了

4.清除缓存

验证:有用!

所以问题就是出在3,因为浏览器默认的超时时间是20分钟,过了这个时间session会被清除,前端设置了这个超时时间为2秒清除

所给引用内容中未提及黑马点评项目停止时显示Redis连接失败的解决方案。不过,一般可以从以下几个方面尝试解决: ### 检查Redis服务状态 确保Redis服务正常运行,可通过以下命令查看Redis服务状态: ```bash systemctl status redis ``` 若服务未运行,使用以下命令启动: ```bash systemctl start redis ``` ### 检查Redis配置 查看Redis配置文件(通常为`redis.conf`),确认绑定的IP地址和端口是否正确。若Redis绑定了特定IP地址,确保应用程序能访问该IP。 ### 检查防火墙设置 防火墙可能会阻止应用程序与Redis之间的通信。检查防火墙规则,开放Redis使用的端口(默认6379): ```bash # 开放6379端口 firewall-cmd --zone=public --add-port=6379/tcp --permanent # 重新加载防火墙规则 firewall-cmd --reload ``` ### 检查应用程序配置 确保应用程序中Redis连接配置正确,包括主机名、端口、密码等。以下是Java中使用Jedis连接Redis的示例: ```java import redis.clients.jedis.Jedis; public class RedisExample { public static void main(String[] args) { // 连接Redis Jedis jedis = new Jedis("localhost", 6379); // 如果Redis有密码,需要进行认证 // jedis.auth("your_password"); // 执行操作 jedis.set("key", "value"); String value = jedis.get("key"); System.out.println(value); // 关闭连接 jedis.close(); } } ``` ### 检查Redis连接池配置 若使用连接池,确保连接池配置合理,避免连接泄漏或连接耗尽。以下是Jedis连接池的示例: ```java import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisPoolExample { public static void main(String[] args) { // 创建连接池配置 JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(100); poolConfig.setMaxIdle(10); poolConfig.setMinIdle(5); // 创建连接池 JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379); // 从连接池获取连接 try (Jedis jedis = jedisPool.getResource()) { // 执行操作 jedis.set("key", "value"); String value = jedis.get("key"); System.out.println(value); } // 关闭连接池 jedisPool.close(); } } ``` ### 检查Redis日志 查看Redis日志文件,查找可能的错误信息。日志文件位置通常在`/var/log/redis/redis-server.log`。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值