我有Laravel项目,我想允许用户使用用户名或电子邮件登录,但是我没有找到任何通过Auth :: attempt()方法传递“或条件”的方法。
我使用以下代码仅通过电子邮件进行记录,
Auth::attempt(['email' => request('email'), 'password' => request('password')])
答案 0 :(得分:1)
您可以检查电子邮件验证条件
示例:
$field = filter_var($request->email, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $request->email, 'password' => $request->password], true)) {
// ...
}
您可以找到有关FILTER_VALIDATE_EMAIL here
的更多信息答案 1 :(得分:0)
如果第一次尝试失败,请再次尝试使用用户名:
if (Auth::attempt(['email' => request('email'), 'password' => request('password')])
|| Auth::attempt(['username' => request('email'), 'password' => request('password')]))
{
// Login success..
}