具有状态的Laravel 5.1 auth系统

时间:2015-08-21 06:20:02

标签: php laravel authentication laravel-5.1

我是laravel的新手我已经集成了内置的身份验证系统并且工作完美。现在我还要在验证时考虑用户表的状态字段。我经常搜索,但找不到将这些功能与内置laravel的身份验证系统集成的正确方法。

1 个答案:

答案 0 :(得分:2)

在进行身份验证时考虑用户状态很简单。有两种方法可以做到这一点,具体取决于您是手动调用 Auth :: attempt()还是在控制器中使用 AuthenticatesUsers RegistersAndAuthenticatesUsers 特征

如果您手动调用 Auth :: attempt(),则始终会将一组凭据传递给该方法。这些凭据用于从数据库中获取用户。将状态字段添加到这些凭据,只有具有给定状态的用户才能登录,例如:

Auth::attempt([
    'username' => Request::input('username'),
    'password' => Request::input('password'),
    'status'   => 'active'
]);

以上只允许 status = active 的用户登录。

如果您在控制器中使用 AuthenticatesUsers RegistersAndAuthenticatesUsers 特征,则需要覆盖 getCredentials()方法。此方法应返回您传递给 Auth :: attempt()的相同数组:

 protected function getCredentials(Request $request) {
  return [
    'username' => Request::input('username'),
    'password' => Request::input('password'),
    'status'   => 'active'
  ];
}