Laravel 8 让其它设备上的 Session 失效
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
方法,以正确地将用户重定向到登录页面。