Tutoriel des passeports Laravel

Tutoriel des passeports Laravel
Plusieurs fonctionnalités d'authentification sont implémentées dans Laravel version 5.2. Différents systèmes d'authentification sont nécessaires pour mettre en œuvre différents itinéraires qui prenaient du temps et inefficaces. Le même système d'authentification peut être utilisé pour la toile et API En utilisant une fonction d'authentification basée sur le jeton. Mais ce système d'authentification n'est pas plus sécurisé pour l'application. Maintenant, le système d'authentification de l'application Laravel peut être sécurisé en utilisant le nouveau Passeport Caractéristique d'authentification de Laravel. Il utilise deux Env ​​qui sont les secrets de l'API Laravel Passport Oauth. Ce sont api_client_id & api_client_secret. Un jeton d'accès génère pour chaque utilisateur lorsque le passeport Laravel est utilisé et permet à l'utilisateur d'accéder à certains points de terminaison sécurisés. Comment créer un système d'authentification API sécurisé à l'aide de Laravel Passport et Accès aux contenus autorisés est affiché dans ce tutoriel.

Avantages de l'utilisation du passeport Laravel:

Le protocole OAuth2 peut être intégré à l'application Laravel en utilisant le mot de passe Laravel. Lorsque l'utilisateur souhaite récupérer ou insérer des données à partir de l'application, la demande d'accès sera envoyée par ce protocole. L'autorisation sera accordée à l'utilisateur en autorisant l'utilisateur pour accéder. Certains avantages majeurs de l'authentification des passeports sont mentionnés ci-dessous.

  • L'authentification du passeport est meilleure que l'authentification par défaut de Laravel car elle peut également être utilisée pour le site externe.
  • L'authentification normale de l'API peut être utilisée pour accéder au contenu du site Laravel uniquement lorsqu'il est implémenté. Mais le site externe peut accéder au contenu du site Laravel avec l'autorisation de l'utilisateur authentifié et du jeton.

Conditions préalables:

Vous devez effectuer la tâche suivante avant d'installer et d'utiliser Laravel Passport pour l'authentification des utilisateurs.

  • Installer un nouveau projet Laravel
  • Configuration de la connexion de la base de données

Installez le passeport Laravel:

Exécutez la commande suivante à partir du terminal pour installer le package de passeport Laravel à l'aide du compositeur.

$ compositeur a besoin de Laravel / Passeport

Vous aurez besoin de créer le utilisateurs table dans la base de données avant d'installer le package passeport. Trois fichiers de migration et un Utilisateur Le modèle a été généré automatiquement lorsqu'un nouveau projet Laravel crée. L'un d'eux est utilisé pour créer un utilisateurs tableau. Accédez au dossier Laravel Project et exécutez la commande migrate suivante pour créer le utilisateurs tableau.

$ php artisan migrer

Exécutez la commande suivante pour installer le package passeport pour le projet.

$ php artisan passeport: installer

Vous obtiendrez les informations suivantes après avoir installé Laravel Passport avec succès dans votre projet. Ici, deux clés secrètes sont générées. Un pour Client d'accès personnel et un autre pour Client de la subvention de mot de passe.

Configuration du passeport Laravel:

Ouvrir le Utilisateur modèle qui est situé à l'emplacement, App \ Modèle.php à partir d'un éditeur, et modifiez le modèle comme ci-dessous. Ajouter Laravel \ Passport \ Hasapitokens au début de la classe et utilisez des hasapitokens et notifiable à l'intérieur de la classe.

application d'espace de noms;
Utiliser illuminate \ contracts \ auth \ mousverifyEmail;
Utilisez illuminate \ Foundation \ Auth \ User comme authentitable;
Utiliser illuminate \ notifications \ NOFIFIABLE;
// ajouté ici
Utilisez Laravel \ Passport \ Hasapitokens;
L'utilisateur de classe s'étend authentitable

// modifié ici
Utilisez des Hasapitokens, notifiables;
/ **
* Les attributs qui sont en masse assignable.
*
* Array @var
* /
protégé $ remplissable = [
«nom», «e-mail», «mot de passe»,
]]
/ **
* Les attributs qui doivent être cachés pour les tableaux.
*
* Array @var
* /
protégé $ Hidden = [
'Mot de passe', 'Remember_Token',
]]
/ **
* Les attributs qui doivent être jetés à des types natifs.
*
* Array @var
* /
protégé $ casts = [
'email_verified_at' => 'datetime',
]]

Ensuite, ouvrez application / fournisseurs / AuthServiceProvider.php Pour enregistrer les itinéraires nécessaires pour émettre et révoquer les jeton d'accès. Passport :: Routes La méthode est appelée dans la méthode de démarrage de AuthServiceProvider. Modifiez le contenu du fichier illustré ci-dessous.

Namespace App \ Providers;
Utiliser Illuminate \ Foundation \ Support \ Providers \ AuthServiceProvider comme ServiceProvider;
Utiliser illuminate \ support \ FACADES \ GATE;
// passeport est ajouté ici
Utilisez Laravel \ Passport \ Passport;
Class AuthServiceProvider étend ServiceProvider

/ ** Les mappages de politiques pour l'application.
*
* Array @var
* /
Politiques $ protégées = [
'App \ modèle' => 'app \ politiques \ modelpolicy',
]]
/ **
* Enregistrez les services d'authentification / d'autorisation.
*
* @return void
* /
Boot de fonction publique ()

$ this-> regritsPolicies ();
Passport :: Routes ();
Passport :: tokensexpirein (maintenant () -> adddays (15));
Passport :: RefreshTokensexPireIn (maintenant () -> Adddays (30));

Ensuite, ouvrez config \ app.php et insérer la ligne suivante dans le fournisseurs Array pour inclure la classe nécessaire pour utiliser Laravel Passport.

Laravel \ Passport \ PassportServiceProvider :: Classe,

Ensuite, ouvrez config \ auth.php et définir le conducteur de l'API à passeport dans le gardes tableau illustré ci-dessous.

'gardes' => [
'web' => [
'Driver' => 'Session',
'fournisseur' => 'utilisateurs',
]],
'api' => [
'Driver' => 'Passport',
'fournisseur' => 'utilisateurs',
'hash' => false,
]],
]],

Implémentez le contrôleur pour l'enregistrement et l'authentification:

Vous devez créer un contrôleur pour implémenter le système d'authentification à l'aide du package Passeport. Exécutez la commande suivante à partir du dossier racine du projet pour créer Apicontreur.

$ PHP Artisan Make: Controller ApiController

Dans la partie suivante de ce tutoriel, trois méthodes sont ajoutées à l'intérieur du Apicontreur Pour créer un nouvel utilisateur, authentifiez un utilisateur et obtenez les informations détaillées d'un utilisateur authentifié.

UN. Enregistrer

Un nouvel utilisateur peut être créé dans le utilisateurs table en implémentant un enregistrer() méthode. Ajouter le code suivant à l'intérieur du Apicontreur Pour implémenter l'API Register. Les valeurs de champ nécessaire pour la création d'un nouvel utilisateur sont récupérées par l'argument, $ demande de la méthode enregistrer(). Validateur La classe est utilisée pour vérifier que les valeurs de champ sont valides ou non en fonction des règles de validation définies. Si la échoue() la méthode renvoie true puis il renverra un message d'erreur au format JSON. Si la échoue() La méthode renvoie false puis un mot de passe de hachage générera et de nouvelles informations utilisateur seront insérées dans le tableau des utilisateurs. Un jeton sera généré après la création du nouvel utilisateur et un message de réussite avec une valeur de jeton sera retourné.

Registre des fonctions publiques (demande $ demande)

/ ** Valider les données à l'aide des règles de validation
* /
$ validator = validator :: make ($ request-> all (), [
'name' => 'requis',
'email' => 'requis | e-mail',
'mot de passe' => 'requis',
]));
/ ** Vérifier que la validation devient échoue ou non
* /
if ($ validator-> échoue ())
/ ** Retour Message d'erreur
* /
return réponse () -> json (['error' => $ validator-> errors ()]);

/ ** stocker toutes les valeurs des champs
* /
$ newuser = $ request-> all ();
/ ** Créez un mot de passe crypté en utilisant le hachage
* /
$ newuser ['mot de passe'] = hash :: make ($ newuser ['mot de passe']);
/ ** insérer un nouvel utilisateur dans le tableau
* /
$ user = user :: create ($ newUser);
/ ** Créer un jeton d'accès pour l'utilisateur
* /
$ Success ['Token'] = $ user-> createToken ('appname') -> AccessToken;
/ ** Retour Message de réussite avec valeur de jeton
* /
retour de réponse () -> JSON (['Success' => $ Success], 200);

B. Connexion:

Tout utilisateur peut être authentifié en implémentant le connexion () méthode. Ajouter le code suivant à l'intérieur Apicontreur Pour implémenter une API de connexion. Les champs requis pour authentifier un utilisateur sont récupérés à partir du $ demande de le connexion () méthode. tentative() la méthode vérifiera les valeurs de e-mail et mot de passe pour l'authentification. Si les valeurs correspondent aux valeurs du utilisateurs Tableau puis l'enregistrement de cet utilisateur particulier sera récupéré et une valeur de jeton sera renvoyée. Si l'authentification échoue, un Non autorisé Le message sera retourné.

Connexion de la fonction publique (demande $ demande)

/ ** Lisez les informations d'identification transmises par l'utilisateur
* /
$ indentings = [
'email' => $ request-> e-mail,
'mot de passe' => $ request-> mot de passe
]]
/ ** Vérifiez que les informations d'identification sont valides ou non
* /
if (auth () -> tentating ($ indentings))
/ ** stocker les informations de l'utilisateur authentifié
* /
$ user = auth :: user ();
/ ** Créer un jeton pour l'utilisateur authentifié
* /
$ Success ['Token'] = $ user-> createToken ('appname') -> AccessToken;
retour de réponse () -> JSON (['Success' => $ Success], 200);
autre
/ ** Retour Message d'erreur
* /
return réponse () -> json (['error' => 'non autorisé'], 401);

C. Détail de l'utilisateur

Vous pouvez obtenir les informations détaillées de tout utilisateur après l'authentification en implémentant l'API utilisateur. Ajouter le code suivant dans le Apicontreur Pour récupérer les informations détaillées de tout utilisateur authentifié.

fonction publique user_info ()

/ ** Récupérer les informations de l'utilisateur authentifié
* /
$ user = auth :: user ();
/ ** Renvoie les détails de l'utilisateur
* /
return réponse () -> JSON (['Success' => $ utilisateur], 200);

Voie de l'API pour le contrôleur:

Ouvrir le Routes \ App.php Fixez et modifiez le contenu avec les codes suivants pour définir l'itinéraire de connexion, enregistrer l'itinéraire et détailler l'itinéraire pour les services API.

/ ** itinéraire pour la connexion API * /
Route :: Post ('Login', 'apiController @ Login');
/ ** itinéraire pour le registre API * /
Route :: Post («enregistrement», «apiController @ registre»);
/ ** Route pour plus de détails API utilisateur * /
Route :: Middleware ('Auth: API') -> Groupe (Function ()
Route :: Post ('Détails', 'apiController @ user_info');
);

Exécutez la commande suivante pour démarrer le serveur de développement Laravel.

$ php artisan Serve

Testez l'authentification de l'API à l'aide de Postman:

Postman est un outil très utile pour tester les API reposantes. La demande HTTP peut être générée très facilement pour tester les fonctionnalités de l'API en utilisant l'interface utilisateur de cette application sans écrire une grande quantité de code pour envoyer des demandes. Postman peut gérer diverses demandes HTTP et utilitaires pour développer des API. Il a des versions à la fois payantes et gratuites pour Linux.

Installer l'agent Postman:

Exécutez la commande suivante à partir du terminal pour installer un agent Postman sur Ubuntu.

$ sudo snap install Postman

Ouvrez l'application après l'installation. L'interface suivante apparaîtra après avoir ouvert la nouvelle fenêtre du facteur.

API du registre de test:

Clique sur le créer une demande lien pour ouvrir la fenêtre de demande. Laravel Development Server s'exécute au port 8000 Par défaut qui est utilisé ici. Si vous utilisez un port différent, vous devez modifier le numéro de port dans votre URL. La méthode du post est sélectionnée dans la liste déroulante et l'URL suivante est utilisée pour envoyer une demande API pour le registre API.

http: // localhost: 8000 / api / registre

Trois champs sont définis comme des champs obligatoires pour le utilisateurs table pour créer un nouvel utilisateur. Ceux-ci sont nom, e-mail, et mot de passe. Définissez trois touches et valeurs pour ces champs illustrés ci-dessous et cliquez sur le envoyer bouton. Le enregistrer() méthode de Apicontreur sera appelé conformément à l'itinéraire si la demande est envoyée correctement.

La réponse suivante apparaîtra si le nouvel enregistrement utilisateur est inséré avec succès dans le utilisateurs tableau. Le code de réponse, 200 indique que la demande HTTP a été réussie et qu'un jeton est généré après avoir inséré le nouvel utilisateur qui est montré dans le corps de réponse au format JSON.

API de connexion à tester:

Sélectionnez le POSTE méthode comme le Enregistrer l'API qui est montré avant. Définissez l'URL suivante dans la barre d'adresse pour envoyer une demande API pour API de connexion.

http: // localhost: 8000 / api / connexion

Deux champs sont obligatoires pour authentifier tout utilisateur en fonction des enregistrements du utilisateurs tableau. Ceux-ci sont e-mail et mot de passe. Définissez deux touches et valeurs pour ces champs illustrés ci-dessous et cliquez sur le envoyer bouton. Le connexion() méthode de Apicontreur sera appelé conformément à l'itinéraire si la demande est envoyée correctement.

La réponse suivante apparaîtra si l'utilisateur est authentifié avec succès en fonction des enregistrements du utilisateurs tableau. Le code de réponse, 200 indique que la demande HTTP a réussi. La valeur de jeton est générée après l'authentification de l'utilisateur et renvoie le corps de réponse au format JSON.

Vous obtiendrez le corps de réponse suivant lorsque les mauvaises informations d'identification seront fournies pour authentifier l'utilisateur. 401 Le code d'erreur est généré ici pour indiquer un accès non autorisé.

API Détails de l'utilisateur de test:

Certains paramètres d'en-tête sont tenus de configurer avant d'envoyer l'API de demande de détails. Clique sur le têtes Onglet de la section de demande et ajoutez trois valeurs d'en-tête pour identifier l'utilisateur authentifié. La valeur de jeton est copiée à partir du corps de réponse et définie pour la valeur d'autorisation.

Accepter: Application / JSON
Type de contenu: Application / JSON
Autorisation:
eyj0exaioijkv1qilcjhbgcioijSuzi1nij9.eyjhdwqioiixiiwianrpijoindu3owuwnmewz
je3zwnmythhotkxndjkmmqwzdqxyzu4mgfimdm3otc4ntiwyza4ntjjztk2mwu4ngfkyje3odu
wmzc3otiwmzk3owvmntkilcjpyxqioje1otkynzk3mtysim5izii6mtu5oti3otcxniwizxhwi
jexnjmwode1nze2lcjzdwiioii1iiwic2nvcgvzijpbxx0.fjyvzfsid4wkcklpz2-
W64UVOOK1DQMO_KBLCI7C00XQKHUQUPVKGRULUX3E2MJIOJ8ET0MLNGPUIFFS8AET7W8KOQCCL
Szmkujot4fhonq5DyzMB4csaixfVOKK8yrm4gpcq-b1ow5e9k5gcrlkmqnt9a6nywoghkxq4ge
QHNHFGPNOKMFJBTGUKIJ3AMTA2I7QHCBWDIT5O970LDM1EHW-AUMESZFLJDJFN6ZKHK4KC93-
vlpzbgekh1xd0p1fjewyms590oiperuwvs1hfckpsnifyRob04TyPhdl25qwbw0m0vatqg9fh
7XGIJFSKYS-FGMMUM7LGLM8JUEVYMZFV-O5XVRLQ2EOCJLHSOFVKKUFZW-J3YFKAHBWY3OOO4GRD4
fowv2tgvdnf1zr_b11bdfdgv3rl8mznhx9dhjafqubwedsnzbwouor9wy
Vh0gi1fcikwowsm_bonatfittr9zqjkiwrqtks3kvqsncf8nikxlp2dgaxdd8mwywoq34nlyhhp
0U2TRY_BFFE3Y_ICGQVLBHCMEWDIXJISM8L9CTLODGRQA3WAQP11FV8CJFAIP2MFZ3UUVY6NDQAR
kv6zrq9oe4ncsqvvxevp7rwofakpu7ecqnwvdoq4hz5j9twx8bz5eybmghvrxkqkheie2j6gzt0-rburfm

La section des en-têtes de la partie de la demande sera ressemblée à l'image suivante. Vous devez définir votre valeur de jeton générée dans le corps de réponse de votre agent de facteur.

Ensuite, cliquez sur le Autorisation Onglet de la section de demande et sélectionnez Jeton de support comme type d'autorisation du Taper menu déroulant.

Maintenant, sélectionnez le POSTE Méthode, définissez l'URL suivante dans la barre d'adresse. Il appellera le informations utilisateur() méthode de Apicontreur qui récupérera les informations détaillées de l'utilisateur authentifié.

http: // localhost: 8000 / API / Détails

Si la valeur du jeton et les informations d'en-tête sont fournies correctement, les détails de cet utilisateur seront retournés en tant que corps de réponse au format JSON comme l'image suivante.

Didacticiel vidéo

Conclusion:

L'authentification du passeport utilise maintenant dans de nombreux sites Web Laravel pour ses fonctionnalités utiles. Il rend le système d'authentification Laravel plus sécurisé que l'authentification par défaut et fournit d'autres services qui ne sont pas disponibles dans l'authentification par défaut. Les utilisations de base du passeport Laravel avec le processus d'installation et de configuration sont correctement décrites dans ce tutoriel. L'utilisation de l'agent Postman est également présentée ici pour tester l'API. J'espère que le lecteur comprendra les fonctionnalités du package des passeports après avoir lu ce tutoriel.