laravel 如果删除会话,用户仍保持登录状态

k7fdbhmy  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(170)

我已经创建了一个新的Laravel项目,基于他们的docs进行简单的用户身份验证。它工作正常,返回时会记住用户。

$auth = Auth::loginUsingId($user->id, true);

但是,当我从数据库中删除会话时,用户仍然保持登录状态。只是使用新的会话ID创建了一个新条目,而不是注销。
这是故意的还是一个bug?我如何防止用户在删除会话后仍然登录?

PHP 8.1.10
Laravel 9.42.2
8yparm6h

8yparm6h1#

如果用户的会话被删除,用户的预期行为是保持登录状态。在这种情况下,Laravel将使用新的会话ID创建一个新会话。
要防止用户在删除会话后仍保持登录状态,可以使用Auth::logout()方法显式注销用户。这将清除用户的会话并防止他们保持登录状态。
或者,您可以在调用Auth::loginUsingId()时将expire_on_close选项设置为true。这将导致用户的会话在他们关闭浏览器时过期,从而有效地注销他们。

$auth = Auth::loginUsingId($user->id, true, ['expire_on_close' => true]);

相关问题