0

我将这两个文件放在 web.php 中,以便它们共享相同的 Web 中间件。但会话不存储

我正在创建一个 SMS OTP 系统。在我运行的 API\SmsController@create 函数中

$rand = rand(100000,999900);

session()->put('otp_test', $rand);
session()->keep(['otp_test']);

在 API 请求之后,我可以从 Laravel Debugger 的 SESSION 选项卡中看到会话变量。

但是,当我刷新页面时,SESSION 变量不存在。它只会离开

_token                  Zv3IpiLwwIXTUMc4tMW1J9eJA5lJCliGtdwEvx0e
_previous               array:1 [ "url" => "http://sms.test/register" ]
_flash                  array:2 [ "old" => [] "new" => [] ]
url                     array:1 [ "intended" => "http://sms.test" ]
PHPDEBUGBAR_STACK_DATA

在此处输入图像描述 另外,当我进行表单发布时,session('otp_test')也是 NULL。

刷新页面后。那里有opt_test会议。 在此处输入图像描述

当我刷新或转到下一页时,我尝试了 session.php 中的文件和数据库。毕竟好像闪过。

4

1 回答 1

1

keep方法用于闪存会话数据。闪现的会话变量最终将被删除。您只是将常规会话变量(在您删除它之前一直存在,会话被刷新或终止)转换为一个闪烁的变量,该变量将通过keep这样的调用自动删除。

Laravel 6.x 文档 - 会话 - Flash 数据

于 2019-11-18T23:39:55.600 回答