Laravel Passport:使用自定义用户名和密码创建令牌

Laravel Passport: create token with custom username and password

在我的应用程序中,我的用户名是电子邮件或 phone 号码。所以用户名可以是电子邮件或 phone 号码。但是 laravel passport 接受用户名作为电子邮件。我想使用电子邮件和密码或 phone_no 和密码生成密码授予类型令牌。 因此生成令牌所需的值将是

  1. email/password
  2. phone_no/password 如何使用 phone_no 作为用户名生成令牌?

在用户模型中使用 findForPassport 方法。喜欢下面

class User  extends Authenticatable {

        use HasApiTokens;
    
        public function findForPassport($username) {
            return self::firstWhere('email', $username) ?? self::firstWhere('phone_no',  $username);
        }

 }

你也可以阅读这篇文档https://laravel.com/docs/8.x/passport#customizing-the-username-field