Laravel - 清除浏览器会话 cookie

Laravel - Clear browser session cookies

我正在考虑将 laravel 中的 session_domain 换成基本域的一部分,如下所示:'.example.com'.

这样我们就可以在基域的所有子域中保留会话,因为默认情况下 cookie 仅保留在当前域中

我已经在本地进行了测试,效果很好,但它似乎会导致活动会话出现问题,因为旧 cookie 仍保留在具有旧域的用户浏览器中。这似乎会在尝试进行身份验证时引起问题,因为现在有多个会话 cookie(一个是旧的,一个是新的 cookie 域路径)。我必须手动清除 cookie 才能正常工作,我显然不希望我的用户这样做。

我不喜欢中间件 expire/unset 这些浏览器 cookie 的想法,因为在每个请求上 运行 这似乎效率低下。

我清除 Laravel 中现有浏览器会话的最佳方法是什么,这样当我交换 session_domain 时,它不会导致现有用户会话出现问题?

您需要为每个子域更改 APP_NAME

因为它用不同的选项卡替换了同一浏览器上同名的session,cookie。简而言之,如果您登录到一个域,它将替换以前的域 cookie。因此,您需要为每个子域设置不同的内容。

如果您在每个域上有多个 .env 则明确更改它,如果您为不同的域使用一个 env 文件,则需要动态更改它。这样你的 cookie 就不会被替换。

如果你看看里面 config/session.php

'cookie' => env(
    'SESSION_COOKIE',
    Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),

如果您在 Cookies 部分内的浏览器 Application 选项卡中看到,这就是生成 cookie 名称的地方。

在您的情况下,它将是 laravel_session cookie 名称