如何在Auth::try方法中传递OR



我有Laravel项目,我想允许用户使用用户名或电子邮件登录,但我没有找到任何方法在Auth::attempt((方法中传递or Condition。

我使用以下代码只通过电子邮件登录,

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

您可以使用电子邮件验证检查的条件进行检查

示例:

$field = filter_var($request->email, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
if (Auth::attempt([$field => $request->email, 'password' => $request->password], true)) {
// ...
}

您可以在这里找到更多关于FILTER_VALIDATEMAIL的信息

如果第一次尝试失败,请对用户名进行另一次尝试:

if (Auth::attempt(['email' => request('email'), 'password' => request('password')])
|| Auth::attempt(['username' => request('email'), 'password' => request('password')]))
{
// Login success..
}

最新更新