如何在Auth :: attempt方法中通过OR?

时间:2018-11-22 04:51:31

标签: php laravel-5

我有Laravel项目,我想允许用户使用用户名或电子邮件登录,但是我没有找到任何通过Auth :: attempt()方法传递“或条件”的方法。

我使用以下代码仅通过电子邮件进行记录,

Auth::attempt(['email' => request('email'), 'password' => request('password')])

2 个答案:

答案 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..
}