Comment utiliser les sessions Node.js pour persister les données

Lorsque votre application web doit « se souvenir » des utilisateurs, elle utilise généralement l’un des deux mécanismes suivants : les cookies ou les sessions. Un cookie est une petite zone de stockage dans le navigateur où vous pouvez conserver des données liées à l’utilisateur, comme les préférences de recherche, par exemple. Les sessions vous permettent de stocker des informations sensibles sur le serveur.

Découvrez comment configurer des sessions dans un serveur Express propulsé par Node.js.

Ce dont vous aurez besoin

Pour suivre ce tutoriel, vous devez installer Node.js et npm. Toute version récente de Node.js devrait être livrée avec npm, un gestionnaire de paquets pour l’installation des dépendances.

Vous utiliserez npm pour installer Express et express-session. Ce sont les outils que vous utiliserez pour créer le serveur web et la session.

Qu’est-ce qu’une session en Node.js ?

Un cookie est un petit fichier que votre navigateur utilise pour stocker des données. Vous pouvez utiliser les cookies pour stocker des données non sensibles telles que les préférences de recherche.

Vous ne devez pas stocker de données sensibles (telles que les noms d’utilisateur et les mots de passe) dans les cookies. Lorsque votre navigateur envoie des cookies par HTTP, ils sont vulnérables aux pirates qui pourraient les intercepter. Ils sont également stockés en texte clair sur votre ordinateur, de sorte que les pirates peuvent potentiellement les inspecter et voler vos données.

Au lieu d’enregistrer les données sensibles sous forme de cookie sur le client, vous devriez les stocker sur le serveur. Elles sont ainsi protégées du monde extérieur.

Les sessions vous permettent de stocker des données sensibles dont votre application a besoin pour identifier l’utilisateur. Il s’agit par exemple du nom d’utilisateur, du mot de passe et de l’adresse électronique. Elles sont plus sûres parce qu’elles se trouvent sur le serveur et non sur le client.

Chaque fois que vous avez des données que vous souhaitez conserver au fil des requêtes, enregistrez-les sur le serveur à l’aide d’une session. Vous apprendrez à créer une session dans la section suivante.

Voir aussi :  Comment récupérer des données avec Redux-Saga dans une application React

Création d’une session dans un serveur Express

Express est un framework web populaire pour Node.js. Il vous permet de mettre en place une application de serveur web qui écoute les demandes des clients sur le numéro de port que vous avez choisi. Vous pouvez créer des routes API, appliquer des intergiciels et même connecter l’application à une base de données, le tout grâce aux API fournies par le framework.

1. Créer un projet Node.js

Créez un tout nouveau dossier pour votre projet, puis lancez votre outil de ligne de commande et accédez à ce dossier.

Ensuite, exécutez la commande suivante pour initialiser un projet Node.js :

Cela génère un fichier package.json dans le dossier racine du projet avec la configuration par défaut. Le fichier package.json pour l’exécution des scripts npm.

2. Installer Express et express-session

Vous utiliserez Express pour créer l’application serveur web. Et express-session pour créer des sessions sur cette application serveur.

Sur le terminal, exécutez la commande suivante pour installer les deux dépendances :

Après avoir installé les deux paquets, l’étape suivante consiste à créer le serveur.

3. Créer des sessions dans l’application

Créez un fichier nommé App.js dans le dossier racine de votre projet et importez les dépendances :

Ensuite, enregistrez l’intergiciel de session. Transmettez un objet avec l’attribut secret (pour signer le cookie sessionID) et le cookie.

Ici, vous fixez l’âge maximal de la session à 30 secondes (30000 millisecondes). Si vous disposez d’un système de connexion, il est essentiel de fixer la valeur de saveUnitialized à false. Si vous ne le faites pas, votre serveur générera un nouvel identifiant de session chaque fois que l’utilisateur enverra une requête.

Ensuite, créez une route de connexion pour modifier la session. Lorsqu’un utilisateur utilise cette route, vous vous attendez à ce que le client envoie le nom d’utilisateur et le mot de passe dans le corps de la requête. Tout d’abord, vous accédez à ces valeurs et vérifiez si elles existent (et si l’utilisateur s’est authentifié) :

Voir aussi :  Variables Bash expliquées : un guide simple avec des exemples

Avec la première instruction if, vous effectuez une vérification fictive. Cette vérification permet de s’assurer que vous ne procédez que si le nom d’utilisateur et le mot de passe sont présents.

Ensuite, vous vérifiez si l’utilisateur est déjà authentifié. Si c’est le cas, vous renvoyez la session au client. Si ce n’est pas le cas, attribuez la valeur true à la propriété authenticated et enregistrez le nom d’utilisateur dans la session. Renvoyez-le ensuite au client.

Avec le code ci-dessus, le serveur se souviendra de chaque utilisateur qui lui envoie une requête. Cela est dû au fait qu’ils se sont authentifiés et que leurs informations uniques (nom d’utilisateur et mot de passe) ont été enregistrées dans la session.

Démarrez votre serveur en ajoutant le code suivant au bas de App.js :

Pour tester cette route, utilisez un client API pour envoyer une requête à la route de connexion que vous avez créée. Veillez à envoyer le nom d’utilisateur et le mot de passe dans le corps de la requête. Voici à quoi ressemblerait votre requête API si vous utilisiez Rest Client :

Si tout se passe bien, vous obtiendrez l’objet suivant :

Avec ce code, deux choses se sont produites. Premièrement, vous vous êtes authentifié sur le serveur. Deuxièmement, la session contient désormais vos informations de connexion, de sorte que le serveur sait maintenant qui vous êtes. Chaque fois que vous enverrez une nouvelle demande, il se souviendra de vous jusqu’à ce que la session expire et que le serveur la supprime.

Les sessions améliorent l’expérience des utilisateurs

Les sessions sont un élément essentiel des applications Node.js. En effet, elles vous permettent de maintenir un état d’interaction à travers de nombreuses requêtes et réponses. Les sessions sont particulièrement importantes pour les applications qui nécessitent que vous vous connectiez.

Utilisez les sessions dans votre application dorsale pour garder une trace des données spécifiques à l’utilisateur. Par exemple, les articles que l’utilisateur a ajoutés à son panier d’achat.

Sans sessions, vous devriez gérer un magasin de données distinct pour chaque utilisateur de votre application. Cela serait inefficace et augmenterait la complexité de l’application.

Voir aussi :  Comment fusionner des fichiers Excel à l'aide d'une macro VBA

Express.js simplifie les sessions, le routage, etc.

Express.js est le framework web Node.js le plus populaire actuellement. Il fournit de nombreux outils et bibliothèques pour créer des applications dorsales, et la bibliothèque express-session n’est que l’une d’entre elles.

Si vous souhaitez utiliser Node.js pour le développement d’applications web dorsales, découvrez Express.

S’abonner à notre lettre d’information

Comment utiliser une session pour stocker des données dans node js ?

Créez un fichier app.js et configurez le serveur de session, comme indiqué ci-dessous.

  • Importez toutes les bibliothèques Node.js que nous avons expliquées précédemment.
  • Initialisez l’application express.
  • Ajoutez les options Express-session.
  • Analyse le formulaire HTML.
  • Définir l’analyseur de cookies.
  • Définir les informations d’authentification.
  • Ajouter les points d’extrémité.
  • Écouter le port du serveur.

Comment gérer des sessions multiples dans node JS ?

Ici, comme sess est global, la session ne fonctionnera pas pour plusieurs utilisateurs car le serveur créera la même session pour tous les utilisateurs. Ce problème peut être résolu en utilisant ce que l’on appelle un magasin de sessions. Nous devons stocker chaque session dans le magasin afin que chacune n’appartienne qu’à un seul utilisateur.

Où Express-session stocke-t-il les données ?

La session est stockée dans MemoryStore , une instance créée par défaut par l’intergiciel. Cette implémentation n’est pas recommandée pour la production. Nous pouvons utiliser un magasin en mémoire externe tel que Redis pour stocker la session. Dans le prochain article, nous nous concentrerons sur l’exemple de connexion et de déconnexion en utilisant express-session et connect-redis .

Quelle est la méthode la plus couramment utilisée pour stocker les données de session dans Express ?

Vue d’ensemble. Express. js utilise un cookie pour stocker un identifiant de session (avec une signature de cryptage) dans le navigateur de l’utilisateur, puis, lors des requêtes suivantes, utilise la valeur de ce cookie pour récupérer les informations de session stockées sur le serveur.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *