该问题已经解决,解决方案如下:
在AuthController控制器中,use那两个trait的下面,添加如下代码
/**
* 设置登录时前端页面提交的“用户名”的变量名为$login
*
* @var string
*/
protected $username = 'login';
/**
* 重写获得登录数据的getCredentials方法,判断第一条数据的类型
*
* @param Requset $request
* @return array
*/
protected function getCredentials(Request $request){
$login = $request -> get('login');
$middle = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'name';
$field = filter_var($login, FILTER_VALIDATE_INT) ? 'phone' : $middle;
return [
$field => $login,
'password' => $request->get('password'),
];
}
此方法重写了引入的AuthenticatesAndRegistersUsers类中引入的AuthenticatesUsers类中的getCredentials方法,该方法作用是返回login方法中调用的的attempt方法验证信息所使用的$credentials数组变量。要注意,最终$field索引变量所对应的$login变量必须与数据库中users表中所需要的字段一致。