Php Laravel 5.2中的自定义登录验证

Php Laravel 5.2中的自定义登录验证,php,laravel-5.2,Php,Laravel 5.2,在我的用户模型中,我有一个状态字段。我只想允许状态为“活动”的用户登录。我想在AppServiceProvider中创建一个自定义验证器,但不确定用户登录时在何处使用它 我可以从authenticateUsers()特性覆盖login()或validateLogin()吗 感谢您的帮助 在trait()的源代码中,我看到: $credentials = $this->getCredentials($request); if (Auth::guard($this->g

在我的用户模型中,我有一个状态字段。我只想允许状态为“活动”的用户登录。我想在AppServiceProvider中创建一个自定义验证器,但不确定用户登录时在何处使用它

我可以从authenticateUsers()特性覆盖login()或validateLogin()吗


感谢您的帮助

在trait()的源代码中,我看到:

    $credentials = $this->getCredentials($request);

    if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) {
        return $this->handleUserWasAuthenticated($request, $throttles);
    }
您可以将凭据数组传递给尝试方法

所以,您所需要做的就是传递一个固定值和其余的请求数据

举个例子,如果在这一刻你经过一个

['email' => 'my@email.com', 'password' => 'my-password']
你现在需要通过考试

['email' => 'my@email.com', 'password' => 'my-password', 'status' => 'active']
或者您需要的任何值:)


希望有帮助

如果愿意,您可以覆盖AuthController中的
getCredentials
,不必对该大型
login
方法进行任何调整

protected function getCredentials(Request $request)
{
    return $request->only($this->loginUsername(), 'password') + ['status' => 'active'];
    // return an array with all the default credentials and adding 'status'
}
要调整验证,您可以覆盖
validateLogin

protected function validateLogin(Request $request)
{
    $this->validate($request, [
        $this->loginUsername() => 'required', 'password' => 'required',
    ]);
    // adjust as needed
}

谢谢你的快速回复!我有点搞不清楚该把数组放在哪里。我使用artisan命令构建所有身份验证路由/控制器。我只能在Auth控制器中看到create()和validate(),但这只与注册用户有关?您可以在类中重写所需的方法。。。在本例中,
login
,因为您的实现将具有(参见示例3)是的,谢谢。在和一位同事交谈后,我也做了类似的事情。我向控制器添加了
validateLogin
,并向用户名添加了自定义验证器。因此,我最终得到了
$this->loginUsername()=>“required | active”
。然后在
AppServiceProvider
中删除了我的自定义验证器。谢谢您的帮助。@Shuda如果您觉得答案令人满意,请标记:)谢谢