阅读(2797) (9)

Laravel 8 自定义用户名字段

2021-07-09 12:59:40 更新

当使用密码验证时,Passport 会在模型中使用 email 属性作为「username」。不过,你仍然可以通过在模型中定义 findForPassport 方法来自定义验证行为:

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    /**
     * 通过给定的username获取用户实例
     *
     * @param  string  $username
     * @return \App\Models\User
     */
    public function findForPassport($username)
    {
        return $this->where('username', $username)->first();
    }
}