我正在使用自定义身份验证。添加了用户状态(启用/禁用),检查我的自定义提供程序的retrieveByCredentials
功能。现在,我如何区分错误,是因为用户输入了错误的凭据还是因为用户被禁用而出现错误?
到目前为止,我查看了以下函数sendFailedLoginResponse
,但没有办法区分。
任何建议我如何实现这一目标?
答案 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'
]);
}
将您的字段的名称和预期值替换为“活动”将使您能够根据用户是否处于活动/启用状态进行验证。您提到您已经完成了此操作,但在这种情况下,验证错误也将是“存在”规则的验证消息。在我的应用程序中,我实际上并不需要关心用户登录失败的原因,但我认为检查验证消息可能就足够了吗?