我有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..
}