Comment utiliser Laravel Passport avec une colonne Nom d'utilisateur personnalisé

maintenant j'utilise quelque chose comme ça pour authentifier l'utilisateur sur mon site de base:

if (Auth::attempt($request->only(['id', 'password']))) {
            //
}

Comment puis-je modifier ce code pour utiliser la colonne custom comme nom d'utilisateur? https://laravel.com/docs/5.3/passport#password-grant-tokens

20
demandé sur Martijn Pieters 2016-08-28 22:18:05

2 réponses

Vous pouvez utiliser la méthode findForPassport dans votre modèle utilisateur.

cette méthode prend le nom d'utilisateur comme argument, et renvoie le modèle d'utilisateur

Par exemple:

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ... some code

    public function findForPassport($username) {
        return $this->where('id', $username)->first();
    }
}
56
répondu Alexander 2016-08-28 19:20:48

un peu trop tard pour répondre, mais j'ai eu du mal à comprendre cela, donc pour être complet et peut-être aider d'autres dans le futur.

Si vous prenez un coup d'oeil à cette partie du code du passeport vous verrez qu'il cherche aussi un validateForPassportPasswordGrant méthode, donc en plus de la réponse D'Alexander, c'est comment vous pouvez authentifier un utilisateur en utilisant des champs personnalisés.

j'Espère que ça aide quelqu'un.

3
répondu freddieRV 2017-08-17 21:45:39