Laravel身份验证错误消息

时间:2017-03-24 04:33:28

标签: laravel laravel-5.4

我正在使用自定义身份验证。添加了用户状态(启用/禁用),检查我的自定义提供程序的retrieveByCredentials功能。现在,我如何区分错误,是因为用户输入了错误的凭据还是因为用户被禁用而出现错误?

到目前为止,我查看了以下函数sendFailedLoginResponse,但没有办法区分。

任何建议我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

我已经通过以下方式解决了这个问题:

/*
   LoginController.php
 */

/**
 * Override default login username to be used by the controller.
 *
 * @return string
 */
public function username()
{
    return 'username';
}

/**
 * Override default validation of the user login request.
 *
 * @param \Illuminate\Http\Request $request
 *
 * @return void
 */
protected function validateLogin(Request $request)
{
    $this->validate($request, [
        $this->username() => [
            'required',
            'min:4',
            'max:30',
            'regex:/^[\S]*$/',
            Rule::exists('users')->where(function ($query)
            {
                $query->where('active', 1);
            })
        ],
        'password' => 'required|min:6|max:100'
    ]);
}

将您的字段的名称和预期值替换为“活动”将使您能够根据用户是否处于活动/启用状态进行验证。您提到您已经完成了此操作,但在这种情况下,验证错误也将是“存在”规则的验证消息。在我的应用程序中,我实际上并不需要关心用户登录失败的原因,但我认为检查验证消息可能就足够了吗?