数据库刷新后用户会话仍然有效

Posted

技术标签:

【中文标题】数据库刷新后用户会话仍然有效【英文标题】:User session is still valid after a database refresh 【发布时间】:2021-03-14 14:41:55 【问题描述】:

在使用 Laravel Sanctum in SPA mode 进行身份验证的 Laravel API 上,数据库刷新后会话仍然有效。

在运行php artisan migrate:fresh --seed 后,之前登录的用户不会断开连接,并且可以使用 200 状态代码、有效的响应正文和响应标头中的 Set-Cookie 请求 API。

以前有人遇到过这个问题吗?

【问题讨论】:

那可能是因为会话仍然有效 @Donkarnash 是的,我考虑过了,但是如果我的用户不再存在于我的数据库中,会话如何仍然有效? Laravel 如何在每个请求上重建 Session Token 和 XSRF-Token? Laravel Sanctum 使用 Laravel 内置的会话认证。您可能正在使用文件会话驱动程序,或者不是数据库的其他东西。因此,即使您刷新数据库,这些会话仍然存在。 感谢您的回答!但是我在您发表评论之前找到了解决方案。无论如何谢谢:) 【参考方案1】:

好的,我刚刚从我的一个朋友那里得到了答案,关键是使用 Laravel 中的默认会话驱动程序file,刷新数据库时不会删除会话。

我刚刚运行了rm -rf storage/framework/sessions/*,一切运行良好。

【讨论】:

您也可以在数据库刷新后使用php artisan key:generate 更改APP_KEY。无论驱动程序如何,它都会使所有会话无效。 (请记住,它不应该在生产中用于使会话无效,它可能会破坏things。)

以上是关于数据库刷新后用户会话仍然有效的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 会话数据在注销/登录后仍然存在,即使对于不同的用户也是如此

刷新的 OAuth2 令牌具有无效签名 (Azure AD OAuth2)

如何检查 IDP 是不是仍然存在有效会话?

Laravel 5 - 用户在会话生命周期后不注销

无法保持页面刷新会话

注销后 Cookie 会话不会失效