我遇到了Auth的一个大问题:laravel 5.2中的尝试方法,我希望我可以覆盖它。
默认情况下,我有类用户,但不包含attribut'email',最后一个包含在其他类user_contacts中,与用户一对一关系。
我可以覆盖此功能吗?因为默认情况下,它需要“电子邮件”,在我的情况下不在用户中
我试图在模型中做到这一点,但没有工作:
lass User extends Authenticatable
{
public function __construct(array $attr = array())
{
parent::__construct($attr);
$this->email = $this->user_contacts()->email;
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function user_contacts()
{
return $this->hasOne('App\UserContact', 'user_id', 'id');
}
}
它只是说没有定义电子邮件字段 有什么建议吗? 非常感谢。
答案 0 :(得分:2)
手动验证用户https://laravel.com/docs/5.3/authentication#authenticating-users
您可以使用任何您想要的字段,'email'字段只是默认字段。
这样的事情将完美无缺:
if(Auth::attempt(['username' => $username, 'password' => $password])){
return redirect()->intended('admin');
}