Authentification API REST Utilisation de Laravel Sanctum

Authentification API REST Utilisation de Laravel Sanctum

L'authentification est une partie importante de tout projet Laravel. De nombreux packages existent à Laravel pour la mise en œuvre de l'authentification de l'API REST, comme le passeport, le sanctum, le JWT, etc. Laravel Sanctum est un package Laravel simple et léger pour implémenter un système d'authentification API REST pour les applications mobiles, les applications (spas) (spas) et les API basées sur les jetons. Il peut générer plusieurs jetons API pour les utilisateurs, et l'application à une seule page peut être authentifiée à l'aide de la session de l'utilisateur. Il peut être utilisé comme alternative à l'API Laravel Passport. Laravel Sanctum est meilleur que Laravel Passport dans de nombreux cas. Il est plus simple que Laravel Passport, et il ne nécessite pas d'authentification OAuth2 comme l'authentification du passeport. Les moyens de mettre en œuvre l'authentification Laravel Sanctum et la vérification de l'API de repos à l'aide de Postman ont été montrés dans ce tutoriel.

Conditions préalables:

Vous devez effectuer les tâches suivantes avant de démarrer les étapes de mise en œuvre du système d'authentification Laravel Sanctum.

Créer un nouveau projet Laravel nommé sanctumproject. Ici le compositeur a été utilisé pour créer le projet Laravel. Si la compositeur n'est pas installé avant alors, vous devez l'installer avant d'exécuter la commande suivante.

$ Composer Create-Project Laravel / Laravel Sanctumproject

Allez dans le dossier du projet.

$ cd sanctumproject

Tous les exemples de ce tutoriel ont été testés dans Laravel version 9+. Vérifiez la version installée de Laravel.

$ php artisan --version

Exécutez les commandes suivantes pour installer et exécuter le facteur.

$ sudo snap install Postman

Configuration de la base de données:

Vous devez créer une base de données dans MySQL pour implémenter la tâche d'authentification. Effectuez les tâches suivantes pour créer une base de données et configurez la base de données du projet Laravel.

  1. Exécutez la commande SQL suivante pour créer une base de données nommée l_sanctum de l'invite mysql.
MySQL> Créer la base de données L_Sanctum;
  1. Ouvrir le .fichier env du projet Laravel et initialisez les valeurs des informations suivantes en fonction de la base de données.
Db_connection = mysql
Db_host = localhost
Db_port = 3306
Db_database = l_sanctum
Db_username = 'nom d'utilisateur'
Db_password = 'mot de passe'

Installer et configurer Laravel Sanctum:

Vous devez effectuer les tâches suivantes pour installer et configurer le Laravel Sanctum.

Exécutez la commande suivante pour télécharger les fichiers nécessaires pour installer le package Laravel Sanctum.

$ compositeur a besoin de Laravel / Sanctum

Exécutez la commande suivante pour publier la configuration Sanctum.

$ php Vendeur artisan: publish -provider = "Laravel \ sanctum \ sanctumServiceProvider"

La sortie suivante apparaîtra après avoir publié le Sanctuaire package avec succès.


Le fichier de migration pour le utilisateurs La table est créée par défaut lors de la création du projet Laravel. Exécutez la commande migrate suivante pour créer le utilisateurs Tableau utilisé pour l'authentification.

$ php artisan migrer

Configuration du middleware:

Pour utiliser le sanctuaire, vous devez ajouter la ligne suivante dans le 'API'Section du Noyau.php déposer. Ouvrir le Noyau.php fichier à partir de l'emplacement, APP / HTTP / KERNEL.php, et ajouter la ligne.

\ Laravel \ sanctum \ http \ middleware \ assurefrontDrequestSarestateful :: class,

Le 'API'La section de ce fichier sera ressemblée à l'image suivante.

Créez l'API:

Accédez au dossier du projet et exécutez la commande suivante pour créer le contrôleur de l'authentification API. AuthController.Le fichier PHP sera créé dans le dossier APP / HTTP / Controllers après avoir exécuté la commande.

$ PHP Artisan Make: Controller AuthController

Ouvrir le AuthController.php et remplacer le contenu par le script suivant. Le Registre () Fonction a été utilisé dans le script pour valider les données de l'utilisateur soumis et insérer les données valides dans le tableau des utilisateurs. La fonction Login () a été utilisée dans le script pour authentifier l'utilisateur en vérifiant les informations d'identification soumises pour la connexion.

Namespace App \ Http \ Controllers;
Utiliser illuminate \ http \ request;
Utiliser illuminate \ support \ FACADES \ Hash;
Utiliser illuminate \ support \ FACADES \ Auth;
Utilisez App \ Models \ User;
Class AuthController étend le contrôleur

Registre des fonctions publiques (demande $ demande)
$ post_data = $ request-> valider ([
'name' => 'requis | string',
'e-mail' => 'requis | String | Email | Unique: utilisateurs',
'mot de passe' => 'requis | min: 8'
]));
$ user = user :: create ([[
'name' => $ post_data ['name'],
'email' => $ post_data ['e-mail'],
'mot de passe' => hash :: make ($ post_data ['mot de passe'])),
]));
$ token = $ user-> createToken ('authtoken') -> PlainTextToken;
return réponse () -> JSON ([
'Access_token' => $ jeton,
'token_type' => 'Bearer',
]));

Connexion de la fonction publique (demande $ demande)
si (!\ Auth :: tentating ($ request-> seulement ('e-mail', 'mot de passe')))
return réponse () -> JSON ([
'Message' => 'Les informations de connexion ne sont pas valides.'
], 401);

$ user = user :: où ('e-mail', $ request ['e-mail']) -> FirstorFail ();
$ token = $ user-> createToken ('authtoken') -> PlainTextToken;
return réponse () -> JSON ([
'Access_token' => $ jeton,
'token_type' => 'Bearer',
]));

Ajouter une route pour l'API:

Ouvrir le API.fichier PHP du itinéraires dossier et ajoutez les lignes suivantes. La première ligne a été utilisée pour ajouter les informations AuthController. La deuxième ligne a été utilisée pour ajouter l'itinéraire de l'API pour enregistrer l'utilisateur. La troisième ligne a été utilisée pour ajouter l'itinéraire de l'API pour authentifier l'utilisateur enregistré.

Utilisez App \ Http \ Controllers \ AuthController;
Route :: Post ('/ registre', [AuthController :: Class, 'Register']);
Route :: Post ('/ Login', [AuthController :: Class, 'Login']);

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

Exécutez l'application Postman. Définissez le type de demande sur POSTE et écrivez l'URL suivante.

http: // 127.0.0.1: 8000 / enregistrement

Après avoir ajouté les paramètres requis pour enregistrer un nouveau compte utilisateur, cliquez sur le bouton Envoyer. Si les nouvelles informations utilisateur sont insérées avec succès dans la table des utilisateurs, alors une information Access_token sera affichée comme l'image suivante.


Ouvrir le table des utilisateurs de la base de données en se connectant au serveur MySQL ou en ouvrant le Phpmyadmin du navigateur pour vérifier tout nouvel enregistrement a été inséré ou non dans le table des utilisateurs. L'image suivante montre qu'un nouvel enregistrement utilisateur a été inséré dans le utilisateurs table après avoir envoyé les données en utilisant le facteur application.


Maintenant, vous pouvez vérifier l'authentification de l'API en utilisant le facteur. Écrivez l'URL suivante dans l'application Postman après avoir sélectionné la publication comme type de demande. Tapez l'adresse e-mail et le mot de passe valides pour authentifier l'utilisateur existant et cliquez sur le Envoyer bouton. Si les informations de l'utilisateur fournies sont valides, le jeton d'accès Les informations apparaîtront comme l'image suivante. Le message d'erreur apparaîtra pour les informations de l'utilisateur non valide.

Conclusion:

Le moyen simple d'implémenter l'authentification de l'API dans le projet Laravel en utilisant le Sanctuaire Le package a été affiché dans ce tutoriel. Les utilisateurs de Laravel obtiendront le concept d'authentification de l'API et pourront implémenter et vérifier l'authentification en utilisant Postman après avoir lu ce tutoriel.