用户登录时,如何根据用户输入的用户名、邮箱或手机号自动匹配账号并登录呢?
在 LoginController 中重写 AuthenticatesUsers Trait 的 attemptLogin 方法:
app/Http/Controllers/Auth/LoginController.php
.
.
.
protected function attemptLogin(Request $request)
{
return collect(['name', 'email', 'mobile'])->contains(function ($value) use ($request) {
$account = $request->username;
$password = $request->password;
return $this->guard()->attemp(
[
$value => $account,
'password' => $password
],
$request->filled('remember')
);
});
}
.
.
.通过给集合的 contains 方法传递一个闭包执行自己的可信测试。有关此方法的介绍,请参见 文档。