如何通过记忆令牌禁用用户登录?

时间:2015-07-25 14:00:35

标签: php mysql laravel authentication cookies

Laravel允许对存储在Cookie中的remember_token的用户进行身份验证。

在我的user表格中,我有一个activeboolean (1, 0)

例如,如果用户被解雇,则需要禁用其登录功能;所以你将active值更改为0。

但是你要用他的饼干做什么?

通知!我用非常原始的方式写了这篇文章!问题是如何妥善处理这种情况。

2 个答案:

答案 0 :(得分:1)

由于您无法删除记住cookie,因此您需要在应用程序中执行检查,以确保所有登录的用户都具有活动状态。

你可以这样做的一种方法是为 auth.login 事件实现一个监听器并检查那里的状态。

class CheckUserStatusHandler {
  public function handle($user) {
    if (!$user->active) Auth::logout($user);
  }
}

注销方法将注销用户删除记住令牌。

然后在 EventServiceProvider

中注册听众
protected $listen = [
  'auth.login' => [
        CheckUserStatusHandler::class
    ]
];

答案 1 :(得分:0)

看起来你应该能够在AuthController中覆盖AuthenticatesUsers :: getCredentials()并添加状态以防止它们无论cookie如何都登录?

/**
 * Get the needed authorization credentials from the request, and force the
 * user to be activated in order to be authenticated with the application.
 *
 * @param  \Illuminate\Http\Request $request
 * @return array
 */
protected function getCredentials(Request $request)
{
    $credentials = $request->only($this->loginUsername(), 'password');

    return array_merge($credentials, [
        'status' => 1,
    ]);
}