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

ここに画像の説明を入力 また、Form Post を行う場合session('otp_test')も NULL です。

ページを更新した後。そこにopt_testセッションがあります。 ここに画像の説明を入力

ファイル、session.php のデータベースを試してみましたが、リフレッシュしたり次のページに移動したりしても保持されません。結局、それをフラッシュするようです。

4

1 に答える 1

1

keepメソッドは、フラッシュされたセッション データ用です。フラッシュされたセッション変数は、最終的に削除されます。通常のセッション変数(削除するまで存在する、セッションがフラッシュされるか死ぬまで存在する)を、そのように呼び出すことで自動的に削除されるフラッシュされた変数に変えましたkeep

Laravel 6.x Docs - セッション - フラッシュデータ

于 2019-11-18T23:39:55.600 に答える