Maison > cadre php > Laravel > Partager le journal des pièges du passeport Laravel

Partager le journal des pièges du passeport Laravel

藏色散人
Libérer: 2020-09-07 09:13:07
avant
3207 Les gens l'ont consulté
Ci-dessous

Laravel La colonne tutoriel partagera l'étape Laravel Passport sur la fosse, j'espère que cela sera utile aux amis dans le besoin !

Partager le journal des pièges du passeport Laravel

La plupart des projets précédents utilisaient DingoAPI + JWT-auth pour implémenter l'authentification API. Bien que Laravel ait publié Passport très tôt, il n'y a pas prêté beaucoup d'attention.

J'ai récupéré Passport aujourd'hui. Même si j'ai rencontré de nombreux pièges, il est toujours assez simple à utiliser~

Pit 1 : je veux juste l'obtenir via mon compte et mon mot de passe pour le de nos jourstoken
Passport s'accompagne de nombreux itinéraires depuis sa naissance. . Mais, la plupart de ces choses me sont vraiment inutiles

Solution :
Redéfinissez-le dans votre
: AuthServiceProvider

Passport::routes(function (RouteRegistrar $router) {
            $router->forAccessTokens();
        }, ['prefix' => 'api']);
Copier après la connexion

Piège 2 : Lors de l'enregistrement d'un compte, comment générer manuellement ?Token

le

de jwt-auth peut facilement générer JWTAuth::fromUser($user);, mais il ne semble pas y avoir de méthode toute faite dans Passport. tokenSolution :
Après avoir enregistré le compte, demandez activement à
oauth/token

public function register(Request $request)
    {
        $validator = $this->validator($request->all());

        if ($validator->fails()){
            return response()->json($validator->errors());
        }

        event(new Registered($user = $this->create($request->all())));

        $client = \DB::table('oauth_clients')->where('password_client', 1)->first();

        $request->request->add([
            'username' => $user->email,
            'password' => $request->password,
            'grant_type' => 'password',
            'client_id' => $client->id,
            'client_secret' => $client->secret,
            'scope' => '*'
        ]);

        $proxy = Request::create(
            'oauth/token',
            'POST'
        );

        return Route::dispatch($proxy);
    }
Copier après la connexion

de s'exécuter à nouveau et obtenez le retour de

{
  "token_type": "Bearer",
  "expires_in": 1296000,
  "access_token": "xxx",
  "refresh_token": "xxx"
}
Copier après la connexion

, une solution parfaite.

Pit 3 : Je souhaite me connecter en utilisant mon numéro de téléphone portable

Passport fournit en fait une interface pour modifier dynamiquement la connexion de l'utilisateur, mais ce n'est pas écrit dans le document

Solution :
Ajoutez la méthode suivante à votre modèle utilisateur

public function findForPassport($login) {
        return User::orWhere('email', $login)->orWhere('mobile', $login)->first();
    }
Copier après la connexion

Pit 4 : Lorsque vous utilisez le mauvais , le passeport passera toujours à la méthode de connexion token

Vérifiez le code source et constatez que le passeport utilise le middleware

web Pas étonnant que ce soit comme ça authAjoutez
à l'en-tête de votre demande pour résoudre le problème Accept:application/json Par exemple. :

Partager le journal des pièges du passeport Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal