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

Partager le journal des pièges du passeport Laravel

藏色散人
藏色散人avant
2020-09-07 09:13:073107parcourir
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']);

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);
    }

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

{
  "token_type": "Bearer",
  "expires_in": 1296000,
  "access_token": "xxx",
  "refresh_token": "xxx"
}

, 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();
    }

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer