Laravel Session 無法儲存取得,_token一直變

  • Laravel 10.29
  • PHP 8.2

問題:
發現無法取得 Session 值,印出來的 token 一直變一直換

storeage/framework/sessions的檔案持續增加

1
2
3
Session::put('token' , $token);
Session::get('token'); // null
exit;

反覆測試問題發現每次更新頁面時,_token 都會持續更新

1
2
3
print_r(Session::all());
// Array ( [_token] => x9eHpOgNKxH2suxcCzo68YU4Q6G9A8lpcPndlZlU )
// Array ( [_token] => nuppBkLg0VopOzkEdsbIvdrBt02Bwql2N0LQbQLI )

解決方式:

  1. 必須要讓他跑到 view 的頁面才會將 session 儲存起來

    1
    2
    3
    4
    Session::put('token' , $token);
    Session::get('token'); // null

    return view('welcome');
  2. Kernel.php 加上 EncryptCookies::class

    1
    2
    3
    4
    protected $middleware = [
    ...
    EncryptCookies::class,
    ];

或 web.php 加 web middleware

1
2
3
Route::get('/', function () {
// ...
})->middleware('web');

如果以上還不行,可以試看看設定 Timezone,有可能產生session當下已經過期了

1
'timezone' => 'Asia/Taipei',