求助!关于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 丢失都有哪些原因#

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

在提现页面,中有以下 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年前 评论