首页 > 解决方案 > Laravel 7:禁用登录和自动登录(remember_token)

问题描述

我希望能够在我的 laravel 7 应用程序中禁用某些用户。因此,我在“用户”表中创建了一个“活动”列,当设置为活动 = 0 时,用户无法再登录。

我遇到的问题是“记住我”功能,因为已经登录的用户在我禁用他们的帐户后仍然可以访问该应用程序,因为他们不必通过登录表单。

删除“Users”表中的“remember_token”会对此有什么影响吗?我对一个用户进行了尝试(删除了表中的用户 remember_token),但它没有立即生效,因为此后自动登录仍然有效。但也许我在这里遗漏了一些东西。

附加信息:我正在使用 Laravel Passport 进行身份验证。

标签: laravelauthenticationremember-me

解决方案


我决定使用中间件解决方案,因为我不想减少整体 SESSION_LIFETIME。

我创建了一个名为“VerifyUserState”的额外中间件,因为我没有成功通过 Auth::user() 或 $this->auth 在 Authenticated.php 中间件的身份验证/句柄函数中读取用户的“活动”值。

我按照本教程实现了这一点: https ://www.itechempires.com/2019/08/how-to-create-configure-and-use-custom-middleware-in-laravel-5-8/

现在它可以根据需要工作。


推荐阅读