数据库刷新后用户会话仍然有效
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 - 会话数据在注销/登录后仍然存在,即使对于不同的用户也是如此