在laravel 5中覆盖尝试auth方法

时间:2016-12-25 22:26:14

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我遇到了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');
}

}

它只是说没有定义电子邮件字段 有什么建议吗? 非常感谢。

1 个答案:

答案 0 :(得分:2)

手动验证用户https://laravel.com/docs/5.3/authentication#authenticating-users

您可以使用任何您想要的字段,'email'字段只是默认字段。

这样的事情将完美无缺:

if(Auth::attempt(['username' => $username, 'password' => $password])){
  return redirect()->intended('admin');
}