我已经创建了一个新的Laravel项目,基于他们的docs进行简单的用户身份验证。它工作正常,返回时会记住用户。
$auth = Auth::loginUsingId($user->id, true);
但是,当我从数据库中删除会话时,用户仍然保持登录状态。只是使用新的会话ID创建了一个新条目,而不是注销。这是故意的还是一个bug?我如何防止用户在删除会话后仍然登录?
PHP 8.1.10 Laravel 9.42.2
8yparm6h1#
如果用户的会话被删除,用户的预期行为是保持登录状态。在这种情况下,Laravel将使用新的会话ID创建一个新会话。要防止用户在删除会话后仍保持登录状态,可以使用Auth::logout()方法显式注销用户。这将清除用户的会话并防止他们保持登录状态。或者,您可以在调用Auth::loginUsingId()时将expire_on_close选项设置为true。这将导致用户的会话在他们关闭浏览器时过期,从而有效地注销他们。
$auth = Auth::loginUsingId($user->id, true, ['expire_on_close' => true]);
1条答案
按热度按时间8yparm6h1#
如果用户的会话被删除,用户的预期行为是保持登录状态。在这种情况下,Laravel将使用新的会话ID创建一个新会话。
要防止用户在删除会话后仍保持登录状态,可以使用Auth::logout()方法显式注销用户。这将清除用户的会话并防止他们保持登录状态。
或者,您可以在调用Auth::loginUsingId()时将expire_on_close选项设置为true。这将导致用户的会话在他们关闭浏览器时过期,从而有效地注销他们。