会话数据未跨请求保留 - Laravel/Inertia

问题描述 投票:0回答:1

我正在尝试在发布请求的会话中保存数据,然后重定向到另一个页面

try {
    $tenant = Tenant::where('email', '=', $request->input('email'))->firstOrFail();
} catch(Throwable $e) {
    return redirect(route('portal.login'))->withErrors(['email' => 'We cannot find any tenant associated with this email address']);
}
    
$this->sendInvite($tenant);

$request->session()->put('tenant', $tenant);
$request->session()->save();

return redirect(route('portal.login.invite'));

我已确认会话数据已被存储。以下是会议的DD

array:4 [▼ // app/Http/Controllers/PortalController.php:55
  "_token" => "hsD4WKNkqFGsVnOMfPhsDcbpj31UcW10ATyFvOQ2"
  "_flash" => array:2 [▶]
  "_previous" => array:1 [▶]
  "tenant" => App\Models\Tenant {#1381 ▶}
]

但是当我尝试在重定向路由上验证此数据时,会话数据丢失了

if (!$request->session()->exists('tenant')) {
    dd(session()->all());
    return redirect(route('portal.login'));
}

会话数据:

array:3 [▼ // app/Http/Controllers/PortalController.php:72
  "_token" => "hsD4WKNkqFGsVnOMfPhsDcbpj31UcW10ATyFvOQ2"
  "_flash" => array:2 [▶]
  "_previous" => array:1 [▶]
]

有人知道为什么会发生这种情况吗?我可以根据要求分享更多信息

更新: 将我的会话驱动器更改为文件可以正常工作,但 cookie 出了问题

javascript php laravel inertiajs
1个回答
0
投票

我解决了这个问题。问题是 cookie 驱动程序存储在浏览器上时的内存非常有限。这就是为什么当我将驱动程序从 cookie 更改为 file 时它开始工作,因为文件驱动程序具有更大的内存容量。

因此,我没有将整个对象保存在 cookie 中,而是保存了 ID,然后它就开始工作了

感谢这个帖子https://stackoverflow.com/a/46882969/7733157

© www.soinside.com 2019 - 2024. All rights reserved.