php - Laravel 在注销时清除整个 session

标签 php laravel laravel-5.4

我在我的 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/

相关文章:

Laravel Eloquent 关系表前缀

php - Laravel 中使用 'LIKE' 查询进行数组到字符串的转换

php - Laravel 5.5 - Horizo​​n 不自动运行第二个队列

php - 优化 Laravel Backpack n-n 关系中的查询

php - 无法在 laravel 中捕获异常

javascript - 使用 Ajax PHP 以一种形式上传数据和文件?

php - 在 PHP 中将变量应用于 DIV 类

php - DDD - 仅在更改时保留聚合子项

PHP注册表未将数据发送到MySQL数据库

php - 保存前返回新的 Laravel 模型 ID