oujood.com

Gérer les Sessions dans ExpressJS - Tutoriel pour Débutants

Apprenez à gérer les sessions avec ExpressJS dans ce tutoriel pas à pas pour débutants s. Exemples simples et exécutables inclus.
Dans ce tutoriel, nous allons apprendre à utiliser les sessions avec ExpressJS. Ce guide est conçu pour les débutants : nous irons doucement, étape par étape, avec des explications très simples et un exemple que vous pourrez tester vous-même. Les sessions permettent de suivre les utilisateurs sur plusieurs pages, par exemple pour se souvenir de leur nom ou compter leurs visites.

chercher |

Introduction : Qu’est-ce qu’une Session et en Quoi Diffère-t-elle des Cookies ?

Une session est comme un carnet de notes que le serveur garde pour chaque utilisateur. Contrairement aux cookies, qui sont stockés dans le navigateur, les données de session restent sur le serveur. Le navigateur reçoit juste un petit identifiant (un "ticket") pour dire "c’est moi". Avec ExpressJS, nous utiliserons express-session pour gérer ça facilement. Par exemple, nous pouvons compter combien de fois quelqu’un visite une page sans demander son nom à chaque fois.

Étape 1 : Préparer Votre Environnement

Avant de commencer, préparons tout ce qu’il faut. Si vous avez suivi les tutoriels précédents, vous avez déjà Node.js et ExpressJS. Sinon, voici les étapes :

  • Vérifiez Node.js : Ouvrez un terminal (Invite de commandes sur Windows, Terminal sur Mac/Linux) et tapez node -v. Si une version apparaît (ex. : v16.13.0), c’est bon. Sinon, téléchargez Node.js sur nodejs.org.
  • Créez un dossier projet : Faites un dossier nommé "sessions-express" sur votre ordinateur.
  • Initialisez le projet : Dans le terminal, allez dans ce dossier avec cd chemin/vers/sessions-express, puis tapez npm init -y. Cela crée un fichier package.json.
  • Installez ExpressJS et express-session : Tapez npm install express express-session. express-session est l’outil pour gérer les sessions.

Étape 2 : Créer une Session Simple

Commençons par un exemple où le serveur utilise une session pour compter les visites d’un utilisateur.

Exemple de Code : Compter les Visites avec une Session

Créez un fichier nommé index.js dans votre dossier "sessions-express" et ajoutez ce code. Il suit le nombre de visites.

📋 Copier le code

var express = require('express');
var session = require('express-session');
var app = express();

// Configurer les sessions
app.use(session({
    secret: 'monsecret',
    resave: false,
    saveUninitialized: false
}));

// Route principale
app.get('/', function(req, res) {
    // Vérifier si la session a un compteur de visites
    if (!req.session.visites) {
        req.session.visites = 1;
    } else {
        req.session.visites += 1;
    }

    // Afficher le nombre de visites
    res.send(`
        <html>
            <body>
                <h1>Bienvenue !</h1>
                <p>Vous avez visité cette page ${req.session.visites} fois.</p>
            </body>
        </html>
    `);
});

app.listen(3000, function() {
    console.log("Serveur démarré sur http://localhost:3000");
});
    

Explication Détaillée du Code

Voici chaque ligne expliquée très simplement pour les débutants :

  • var express = require('express'); : On importe ExpressJS pour créer notre serveur.
  • var session = require('express-session'); : On importe express-session, l’outil qui gère les sessions.
  • var app = express(); : On crée une application Express, comme une boîte pour notre code.
  • app.use(session({ ... })); : On active les sessions avec quelques options :
    • secret: 'monsecret' : Une clé secrète pour sécuriser les sessions. Vous pouvez mettre n’importe quel mot, mais gardez-le secret dans un vrai projet.
    • resave: false : On ne sauvegarde pas la session à chaque fois si elle n’a pas changé (gain de performance).
    • saveUninitialized: false : On ne crée pas de session vide pour les visiteurs qui n’ont rien fait encore.
  • app.get('/', function(req, res) { ... }); : Quand quelqu’un visite la page principale ("/"), on fait quelque chose. "req" contient les infos de l’utilisateur, "res" est ce qu’on renvoie.
  • if (!req.session.visites) { ... } : On vérifie si la session a déjà un compteur "visites". Si non (première visite), on le met à 1.
  • req.session.visites += 1; : Si le compteur existe, on l’augmente de 1. req.session est comme un carnet où on note des choses pour cet utilisateur.
  • res.send(`...`); : On affiche une page avec le nombre de visites stocké dans la session.
  • app.listen(3000, ...); : On démarre le serveur sur le port 3000.

Pour exécuter : Sauvegardez index.js, tapez node index.js dans le terminal, puis ouvrez <a href="http://localhost:3000" title="Tester les sessions">http://localhost:3000</a>. La première fois, vous verrez "Vous avez visité cette page 1 fois". Rechargez (F5), et ça passera à 2, puis 3, etc.

Étape 3 : Ajouter un Nom d’Utilisateur avec une Session

Allons plus loin : utilisons une session pour stocker un nom personnalisé et afficher un message avec les visites.

Exemple de Code : Session avec Nom et Visites

Mettez à jour index.js avec ce code. Il ajoute un formulaire pour définir un nom dans la session.

📋 Copier le code

var express = require('express');
var session = require('express-session');
var app = express();

// Configurer les sessions
app.use(session({
    secret: 'monsecret',
    resave: false,
    saveUninitialized: false
}));
app.use(express.urlencoded({ extended: false }));

// Route principale
app.get('/', function(req, res) {
    // Gérer le compteur de visites
    if (!req.session.visites) {
        req.session.visites = 1;
    } else {
        req.session.visites += 1;
    }

    // Gérer le nom dans la session
    var nom = req.session.nom || "Visiteur";

    res.send(`
        <html>
            <body>
                <h1>Bienvenue, ${nom} !</h1>
                <p>Vous avez visité cette page ${req.session.visites} fois.</p>
                <form method="POST" action="/definir-nom">
                    <label>Changer votre nom : </label>
                    <input type="text" name="nom">
                    <button type="submit">Définir</button>
                </form>
            </body>
        </html>
    `);
});

// Route pour définir le nom dans la session
app.post('/definir-nom', function(req, res) {
    req.session.nom = req.body.nom;
    res.send(`
        <html>
            <body>
                <h1>Nouveau nom défini : ${req.session.nom} !</h1>
                <p><a href="/" title="Retour à la page principale">Retour</a></p>
            </body>
        </html>
    `);
});

app.listen(3000, function() {
    console.log("Serveur démarré sur http://localhost:3000");
});
    

Explication Détaillée du Code

Voici chaque nouvelle partie expliquée pour les débutants :

  • app.use(express.urlencoded({ extended: false })); : On ajoute un outil pour lire les données des formulaires (comme dans "Form Data").
  • var nom = req.session.nom || "Visiteur"; : On récupère le nom depuis la session. S’il n’existe pas, on utilise "Visiteur" par défaut.
  • res.send(`...`); : On affiche une page avec le nom, le nombre de visites, et un formulaire pour changer le nom.
  • app.post('/definir-nom', function(req, res) { ... }); : Quand le formulaire est envoyé à "/definir-nom", on agit.
  • req.session.nom = req.body.nom; : On enregistre le nom du formulaire dans la session. Ça reste sur le serveur, pas dans le navigateur.
  • res.send(`...`); : On confirme le nouveau nom avec un lien pour revenir.

Pour exécuter : Sauvegardez index.js, tapez node index.js, allez à <a href="http://localhost:3000" title="Tester les sessions">http://localhost:3000</a>. Vous verrez "Bienvenue, Visiteur !" et "1 fois". Entrez un nom (ex. : "Marie"), cliquez sur "Définir", puis revenez. Vous verrez "Bienvenue, Marie !" avec le compteur qui augmente.

Conclusion

Bravo ! Vous savez maintenant gérer les sessions avec ExpressJS pour suivre les utilisateurs. Les sessions sont plus sécurisées que les cookies pour stocker des données sensibles, car elles restent sur le serveur. Testez ce code dans gérer-sessions-expressjs.html. Pour aller plus loin, explorez notre prochain tutoriel sur Authentification avec ExpressJS ou consultez la documentation ExpressJS.



Voir aussi nos tutoriel :

fonction convert_uuencode, convert_uuencode

Encode une chaîne de caractères en utilisant l'algorithme uuencode

clear

Spécifie les côtés d'un élément où d'autres éléments flottants ne sont pas autorisés

Syntaxe jQuery

Syntaxe jQuery