webentwicklung-frage-antwort-db.com.de

Verwendung von Laravel Passport mit einer benutzerdefinierten Benutzernamensspalte

Jetzt benutze ich so etwas, um den Benutzer auf meiner Basis-Site zu authentifizieren:

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

Wie kann ich diesen Code für die Verwendung einer benutzerdefinierten Spalte als Benutzername ändern? https://laravel.com/docs/5.3/passport#password-grant-tokens

30
tehcpu

Sie können die findForPassport-Methode in Ihrem Benutzermodell verwenden.

Diese Methode verwendet den Benutzernamen als Argument und gibt das Benutzermodell zurück

Beispielsweise:

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ... some code

    public function findForPassport($username) {
        return $this->where('id', $username)->first();
    }
}
81
Alexander

Ein bisschen zu spät, um zu antworten, aber es fällt mir schwer, das herauszufinden, also der Vollständigkeit halber und vielleicht um anderen in Zukunft zu helfen.

Wenn Sie sich diesen Teil des Passcodes ansehen, werden Sie feststellen, dass es sich auch um eine validateForPassportPasswordGrant -Methode handelt. Zusätzlich zu Alexanders Antwort können Sie auf diese Weise einen Benutzer authentifizieren mit benutzerdefinierten Feldern.

Hoffe es hilft jemandem.

6
freddieRV