我在我的 session 中保留了不同的东西,当用户登录和注销时我都使用它们。问题是当用户注销时,laravel 会清除我在 session 中存储的所有内容:
发生这种情况是因为 laravel 核心类 AuthenticatesUsers 看起来像这样:
/**
* Log the user out of the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->invalidate();
return redirect('/');
}
因为我不想更改核心类,我怎样才能避免在用户注销时丢失我的 session 数据?
最佳答案
默认的 LoginController.php 使用特征 AuthenticatesUsers.php 。 所以将此代码复制到 LoginController.php 以覆盖它。
public function logout(Request $request)
{
$data = session()->get('cart');
$this->guard()->logout();
$request->session()->invalidate();
$request->session()->regenerate();
session()->put('cart', $data);
return $this->loggedOut($request) ?: redirect('/');
}
关于php - Laravel 在注销时清除整个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49831619/