阅读(2300) (11)

Laravel 8 让其它设备上的 Session 失效

2021-06-29 15:28:32 更新

Laravel 还提供了一种机制,用于将其它设备上的用户 Session 失效和「注销」,而不会使当前设备上的 Session 失效。 当你想要用户更改或更新密码时可以使其他设备上的会话无效并且保持当前设备的登录状态时,可以使用此功能。

在开始之前,你应该确保 Illuminate\Session\Middleware\AuthenticateSession 在你的 app / Http / Kernel.php 类中的 web 中间件组中存在并且没有被注释掉:

'web' => [
    // ...
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    // ...
], 

然后, 你就可以使用 Auth facade 上的 logoutOtherDevices 方法。此方法要求用户提供其当前密码,你的应用程序应通过输入表单接受该密码:

use Illuminate\Support\Facades\Auth;

Auth::logoutOtherDevices($password); 

当调用 logoutOtherDevices 方法时,用户的其他 Session 将完全失效,这意味着它们将「退出」他们之前通过身份认证的所有看守器。

注意:将 AuthenticateSession 中间件与 login 路由的自定义路由名结合使用时,必须覆盖应用程序异常处理程序上的 unauthenticated 方法,以正确地将用户重定向到登录页面。