10.9. Création d'une API REST de base avec NodeJS et ExpressJS : authentification et autorisation

Página 74

L'un des éléments les plus importants de toute application est la sécurité et la façon dont nous gérons l'authentification et l'autorisation. Cela est particulièrement vrai lors de la création d'API, où nous devons garantir que seuls les utilisateurs authentifiés et autorisés peuvent accéder à certaines données et fonctionnalités. Dans ce chapitre, nous explorerons comment créer une API REST de base avec NodeJS et ExpressJS, en mettant l'accent sur l'authentification et l'autorisation.

Authentification

L'authentification est le processus de vérification de l'identité d'un utilisateur. En d’autres termes, c’est ainsi que nous confirmons qu’un utilisateur est bien celui qu’il prétend être. Il existe plusieurs façons de procéder, mais l'une des plus courantes consiste à utiliser des noms d'utilisateur et des mots de passe.

Pour implémenter l'authentification dans notre API, nous devons d'abord installer certaines dépendances. Nous utiliserons le package 'bcrypt' pour hacher les mots de passe des utilisateurs et le package 'jsonwebtoken' pour générer des jetons d'authentification.

$ npm installer bcrypt jsonwebtoken

Une fois les dépendances installées, nous pouvons commencer à implémenter l'authentification. Tout d’abord, créons un itinéraire pour l’enregistrement des utilisateurs. Dans cette voie, nous hacherons le mot de passe de l'utilisateur avant de le stocker dans la base de données.

const express = require('express'); const bcrypt = require('bcrypt'); const Utilisateur = require('../models/User'); const routeur = express.Router(); router.post('/register', async (req, res) => { const haschedPassword = attendre bcrypt.hash(req.body.password, 10); const user = new User ({ nom d'utilisateur : req.body.username, mot de passe : haschedPassword }); attendre l'utilisateur.save(); res.status(201).send({ message : 'Utilisateur enregistré avec succès' }); });

Maintenant, créons un itinéraire permettant aux utilisateurs de se connecter. Dans cet itinéraire, nous allons vérifier si le mot de passe fourni correspond au mot de passe stocké dans la base de données. Si le mot de passe est correct, nous générerons un jeton d'authentification et l'enverrons à l'utilisateur.

const jwt = require('jsonwebtoken'); router.post('/login', async (req, res) => { const user = wait User.findOne({ nom d'utilisateur : req.body.username }); if (!user || !await bcrypt.compare(req.body.password, user.password)) { return res.status(401).send({ message : 'Nom d'utilisateur ou mot de passe invalide' }); } const token = jwt.sign({ id: user._id }, 'your_jwt_secret'); res.send({ jeton }); });

Autorisation

L'autorisation est le processus de vérification qu'un utilisateur est autorisé à effectuer une action spécifique. En d’autres termes, c’est ainsi que nous déterminons ce qu’un utilisateur peut et ne peut pas faire. Il existe plusieurs façons de procéder, mais l'une des plus courantes consiste à utiliser des jetons d'authentification.

Créons un middleware pour vérifier le jeton d'authentification de l'utilisateur. Si le jeton est valide, nous stockerons l'ID utilisateur dans l'objet de requête et appellerons la fonction suivante. Si le jeton n'est pas valide, nous renverrons une réponse avec le statut 401 (Non autorisé).

const jwt = require('jsonwebtoken'); const authentifier = (req, res, suivant) => { jeton const = req.headers.authorization; si (!jeton) { return res.status(401).send({ message : 'Aucun jeton fourni' }); } jwt.verify(token, 'your_jwt_secret', (err, décodé) => { si (erreur) { return res.status(401).send({ message : 'Jeton invalide' }); } req.userId = décodé.id; suivant(); }); } ;

Désormais, nous pouvons utiliser ce middleware sur n'importe quelle route nécessitant une authentification. Par exemple, nous pouvons créer une route pour obtenir les détails de l'utilisateur authentifié.

router.get('/me', authentifier, async (req, res) => { const user = attendre User.findById(req.userId); res.send(utilisateur); });

Avec cela, nous avons terminé la création d'une API REST de base avec NodeJS et ExpressJS, avec authentification et autorisation. N'oubliez pas que la sécurité est un aspect crucial de toute application et doit être prise au sérieux dès le début du développement.

Répondez maintenant à l’exercice sur le contenu :

Quelle est la différence entre l'authentification et l'autorisation dans le contexte d'une API REST et comment sont-elles implémentées à l'aide de NodeJS et ExpressJS ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

7510.10. Création d'une API REST de base avec NodeJS et ExpressJS : manipulation de données dans la base de données

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte