求助!关于session里面数据丢失的问题

1). 当前使用的 Laravel 版本?

5.7

2). 业务环境

laravelA使用blade面板通过web路由收到请求,进行一些验证然后通过API请求另外一个laravelB,laravelA将laravelB返回的内容整理输出到laravelA的blade,展示给用户
session使用了AWS的redis作为驱动

3). 问题描述?

业务流程是这样的

  • 提现画面 》 手机号验证画面 》提现成功
    提现画面有些输入项,传送到手机验证页面的controller,并将其放入session()->put(‘withdraw_data’)

手机号验证画面有个获取验证码按钮。这个获取验证码的是通过laravelB,获取验证码response返回到laravelA后,前面存进session的withdraw_data丢失了。

但是用户的登录状态并没有丢失。

4). session丢失都有哪些原因

求助求助~有相关经验的大神。非常感谢

明天准备继续添加一些日志进去。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

在提现页面,中有以下js代码。checkBullBearOpenPosition函数的ajax请求和checkFxMinusBalance中请求。发生并发请求。导致有概率session会获取不到(到底是获取不到还是丢失还不明确。感觉像是丢失了)。 网络好的时候会获取不到,网络慢一点的时候能获取到。

所以把checkBullBearOpenPosition的处理逻移动到laravelB去处理了。该页面上的checkBullBearOpenPosition删除掉。解决了此问题。

感谢大家的热心问答!!非常感谢 file

1个月前 评论
讨论数量: 8
sanders

我理解一下楼主的问题:

  1. 两个服务通过服务器之间的 API 进行通讯;
  2. 用户访问服务A,并写入 session 数据;

那么楼主是想从服务B访问 session 数据吗?这在一般情况下是不可以的,除非你能透传 Session ID 给服务B。

既然是服务端通讯,常见的做法是将这些 session 数据直接传给服务B。

1个月前 评论

缓存数据, 不用 cache()

1个月前 评论

理一下, lavavelA存的,谁取的发现丢失了?

1个月前 评论
running8

最近我也出现丢失session的问题,改为用数据库在存储session就好了

1个月前 评论

手机号验证画面 是 b ?存数据也在b 存的?b存的a取?session不能够的,session我们redis也需要知道b的sessid才能在redis取

1个月前 评论

谢谢大家。session是在a存也在a取。跟b无关。b只是api服务器。今天上班已解决。明天用电脑发表发生的原因。

1个月前 评论

操作session 没有锁的原因么?

1个月前 评论

在提现页面,中有以下js代码。checkBullBearOpenPosition函数的ajax请求和checkFxMinusBalance中请求。发生并发请求。导致有概率session会获取不到(到底是获取不到还是丢失还不明确。感觉像是丢失了)。 网络好的时候会获取不到,网络慢一点的时候能获取到。

所以把checkBullBearOpenPosition的处理逻移动到laravelB去处理了。该页面上的checkBullBearOpenPosition删除掉。解决了此问题。

感谢大家的热心问答!!非常感谢 file

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!