Adonisjs authentification jwt
Comment créer une API avec authentification dans Adonis
Introduction
Dans ce tutoriel, nous allons créer une API simple, et nous allons y ajouter l’authentification. Grâce à Adonis.js cela peut être géré facilement car ce cadre génial est livré avec l’authentification JWT prête à l’emploi. Si vous ne savez pas ce que j'entends par JWT, vous pouvez vous rendre sur ce lien pour obtenir plus d'informations à ce sujet. Il est maintenant temps de se lancer dans ce tutoriel. Nous allons créer une API pour un article de blog afin que seuls les utilisateurs authentifiés puissent effectuer certaines opérations définies sur les articles.
Prérequis js
est requis. Vous devez également avoir installé les éléments suivants sur votre machine :
Configurer le projet Adonis
Ouvrez d’abord votre terminal et tapez cette commande pour installer l’interface de ligne de commande Adonis et créer une nouvelle application Adonis :
Démarrez maintenant le serveur et testez si tout est fonctionne correctement :
Ouvrez votre navigateur et faites une demande à : http://127.0.0.1:3333. Vous devriez voir ce qui suit :
Configurez la base de données et créez la migration
Créez un fichier database.sqlite dans le répertoire de la base de données, et modifiez le fichier .env comme ceci :
Ouvrez votre terminal et exécutez cette commande pour générer notre modèle ainsi que son contrôleur correspondant et son fichier de migration qui sera utilisé pour construire le schéma de notre table posts :
Dans votre fichier de post-migration, copiez et collez ce code :
Ce code est assez similaire à ce à quoi nous sommes habitués dans la migration Laravel. Vous pouvez voir que nous avons défini les champs de notre table PostSchema comme suit :
- titre
- prix
- description
- user_id
Le créera un champ avec et définissez-le comme . Le créera les champs et respectivement. Nous définissons également une clé étrangère sur le champ pour nous assurer que l’utilisateur qui soumet le message existe bel et bien.
Maintenant, si vous exécutez cette commande : dans votre terminal, elle créera les tables posts, et users (dont la migration est définie par défaut) dans votre base de données. Nous devons définir certaines relations sur nos modèles pour nous faciliter la tâche. Supposons qu'un utilisateur puisse avoir un ou plusieurs messages, et qu'un seul message appartienne à un utilisateur particulier. Traduisons cela en code :
Ajoutez cette fonction à votre modèle de publication
et celle-ci à votre modèle d'utilisateur.
Cela a été très simple à réaliser :). Nous en avons fini avec ça.
Construire notre flux de travail d’authentification
Nos utilisateurs ont besoin de s’inscrire et de s’authentifier afin d’effectuer toute opération judicieuse sur nos données. Lors de son inscription, notre API va générer un jeton d’autorisation qu’il pourra ajouter à ses futures requêtes à manipuler les données de nos publications. En gros, nous allons construire un registre et une fonction de connexion, nous devons donc créer notre contrôleur d'authentification.
Tout d’abord, effectuez cette modification dans votre fichier pour indiquer à notre application de l’utiliser comme authentificateur.
Ensuite, rendez-vous sur votre terminal et tapez cette commande pour créer votre contrôleur :
L’indicateur sert à spécifier le type de contrôleur que nous voulons créer, dans notre cas il s’agit d’un contrôleur HTTP. Copiez et collez maintenant ce code dans votre fichier.
Comme prévu, nous avons nos deux fonctions. La fonction crée un nouvel utilisateur avec les données envoyées dans la demande et génère un jeton d’autorisation pour cet utilisateur, puis renvoie l’utilisateur nouvellement créé en tant que réponse.
Notre deuxième fonction vérifie d’abord si les informations de l’utilisateur sont valides, puis elle récupère toutes ses données et génère également un jeton d’autorisation pour lui, et renvoie l’utilisateur connecté.
Notez que le sera ajouté à nos futures requêtes, comme je l’ai dit ci-dessus, pour aider à authentifier l’utilisateur et l’aider à effectuer l’action prévue sur nos données uniquement s’il est authentifié et reconnu par notre système API.
Configurons maintenant nos itinéraires. Allez dans votre fichier et collez le code suivant à l’intérieur :
Nos deux premières routes sont à des fins d’authentification, l’une pour l’enregistrement des utilisateurs et l’autre pour la connexion de l’utilisateur. Ensuite, nous définissons quelques itinéraires auxquels nos utilisateurs peuvent faire des requêtes afin de manipuler les données de nos publications, comme vous pouvez le remarquer :). Nous ajoutons le middleware à certaines de nos routes qui nécessitent une authentification de l’utilisateur parce que l’opération prévue est assez judicieuse et que nous devons nous assurer que l’utilisateur est autorisé par le système à effectuer cette opération.
Définir notre PostController
Ce responsable du traitement sera responsable du traitement des demandes concernant les données de nos publications. Dans votre terminal, tapez cette commande pour créer votre manette :
Le est maintenant généré. Il est temps de définir ses fonctions, d’ouvrir le fichier et de coller le bloc de code suivant dans le corps de votre classe de contrôleur :
Expliquons ces quatre fonctions définies ci-dessus :
-
récupère tous les messages de la base de données et les renvoie au fur et à mesure que la réponse
-
extrait les données des demandes pour créer un nouvel article, associe l’utilisateur authentifié actuel en tant qu’auteur, et rétorque l’article nouvellement créé avec son utilisateur associé.
-
Met à jour un message en le récupérant avec des informations extraites de l’objet de la requête et le renvoie
-
enfin, trouve un message en fonction de son et le supprime des données, puis il renvoie un message.
Testez votre API avec Postman
Testons maintenant l'API avec Postman. Si vous n'avez pas Postman, vous pouvez l’obtenir ici. Non ne me remerciez pas, c'est gratuit 😉.
Tout d’abord, vous devez désactiver la protection CSRF afin d’envoyer des requêtes API sans problème. Rendez-vous sur le fichier et effectuez cette modification :
Si vous ne savez pas du tout comment utiliser Postman, rendez-vous sur ce lien pour obtenir plus d’informations, puis revenez au tutoriel.
Supposons que nous voulions obtenir des articles de notre base de données, nous tapons pour récupérer tous nos articles et sélectionnons la méthode GET sur l’interface utilisateur du facteur, et appuyons sur le bouton Envoyer pour envoyer votre demande. Vous obtiendrez vos articles s’ils le sont ou un tableau vide si la base de données est vide.
Si vous souhaitez vous inscrire au système, sélectionnez la méthode POST et entrez vos informations d’identification (nom d’utilisateur, e-mail, mot de passe) dans l’onglet corps, cochez-les pour les prendre en compte, et appuyez sur le bouton Envoyer pour envoyer le demander. La réponse doit être un objet utilisateur contenant votre jeton d’authentification.
Comme vous pouvez le voir sur les images ci-dessous, nous avons testé certains de nos itinéraires, disons les plus importants , , . Et vous pouvez voir dans les images ci-dessous que notre API fonctionne correctement et qu’un jeton est généré lors de l’inscription et de la connexion de l’utilisateur.
Conclusion
Grâce à ce tutoriel, vous avez appris comment créer une API avec authentification pour vos utilisateurs. J’espère que cela vous a été utile et que cela vous aidera à comprendre comment vous pouvez intégrer ce type de système dans une de vos applications existantes. N’hésitez pas à récupérer le code source du projet sur GitHub.