我使用laravel的5内置身份验证进行登录。我花了几个小时找到位于登录时使用的数据库查询的位置,我想同时允许电子邮件和用户名是电子邮箱。任何人都知道数据库查询位于何处?任何人都知道如何在身份验证上同时允许用户名和密码。
PS:为了提高细节,我只希望用户允许他们同时登录用户名和电子邮件。
PS:再次!我在laravel 5而不是4上跑步!答案 0 :(得分:1)
在表单中定义登录名和密码输入,然后请求应如下所示:
public function authorize() {
return true;
}
public function rules()
{
return [
'login' => 'required',
'password' => 'required'
];
}
然后您的登录功能应如下所示:
public function login(LoginRequest $request)
{
$field = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
$request->merge([$field => $request->input('login')]);
if ($this->auth->attempt($request->only($field, 'password')))
{
return redirect('/');
}
return redirect('/login')->withErrors([
'error' => 'You email/username or password combination is wrong.',
]);
}
这是一个优化版本,因为它不是进行2次尝试来验证两者的凭据:if是用户名还是密码,laravel将通过验证给定数据是否指向电子邮件登录来完成工作或用户名。