Laravel 6 会话不会持续 web.php

Laravel 6 Session does not persist in web.php

我将两个文件放在一起 web.php 以便它们共享相同的网络中间件。但是session不存储

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

$rand = rand(100000,999900);

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

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

但是,当我刷新页面时,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

此外,当我执行表单 Post 时,session('otp_test') 也为 NULL。

刷新页面后。那里有 opt_test 会话。

我尝试了 session.php 中的文件和数据库,当我刷新或转到下一页时,它们都不会持续存在。 好像还是闪一下。

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

Laravel 6.x Docs - Sessions - Flash Data