const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
// Utilise le middleware cookie-parser pour faciliter la manipulation des cookies
app.use(cookieParser());
// Route pour définir un cookie
app.get('/set-cookie', (req, res) => {
// Définit un cookie avec le nom 'user' et la valeur 'John Doe'
res.cookie('user', 'John Doe', { maxAge: 900000, httpOnly: true });
// maxAge : Durée de vie du cookie en millisecondes (ici, 15 minutes)
// httpOnly : Empêche l'accès au cookie via JavaScript côté client (sécurité)
// Envoie une réponse indiquant que le cookie a été défini
res.send('Cookie défini avec succès !');
});
// Route pour lire le cookie défini précédemment
app.get('/get-cookie', (req, res) => {
// Récupère la valeur du cookie 'user'
const username = req.cookies.user;
// Vérifie si le cookie existe
if (username) {
// Si le cookie existe, envoie une réponse avec le nom d'utilisateur
res.send(`Bonjour, ${username} !`);
} else {
// Si le cookie n'existe pas, envoie un message indiquant qu'aucun cookie n'a été trouvé
res.send('Aucun cookie trouvé.');
}
});
// Route pour effacer le cookie
app.get('/clear-cookie', (req, res) => {
// Efface le cookie en le remplaçant par un cookie expiré
res.clearCookie('user');
// Envoie une réponse indiquant que le cookie a été effacé
res.send('Cookie effacé avec succès !');
});
// Démarrage du serveur sur le port 3000
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Serveur Express en cours d'exécution sur le port ${PORT}`);
});
Exemple 2.2
suivre le nombre de fois qu'un utilisateur a visité le site
serveur.js
// serveur.js
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
// Utilise le middleware cookie-parser pour faciliter la manipulation des cookies
app.use(cookieParser());
// Route pour afficher la page d'accueil avec le compteur de visites
app.get('/', (req, res) => {
// Récupère le compteur de visites depuis le cookie ou initialise à 1 si le cookie n'existe pas
const visitCount = req.cookies.visitCount ? parseInt(req.cookies.visitCount) + 1 : 1;
// Stocke le nouveau compteur de visites dans le cookie avec une durée de vie d'une heure
res.cookie('visitCount', visitCount, { maxAge: 3600000, httpOnly: true });
res.send(`Bienvenue sur la page d'accueil ! Vous avez visité cette page ${visitCount} fois.`);
});
// Démarrage du serveur sur le port 3000
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Serveur Express en cours d'exécution sur le port ${PORT}`);
});
Exemple3
cet Exemple utilise les cookies pour implémenter un système basique d'authentification.
authMiddleware.js
// authMiddleware.js
const authMiddleware = (req, res, next) => {
const authToken = req.cookies.authToken;
// Vérifie si le jeton d'authentification est présent dans le cookie
if (!authToken) {
return res.status(401).send('Accès non autorisé. Veuillez vous connecter.');
}
// Ici, vous devriez implémenter une vérification réelle du jeton (décodez, validez, etc.)
// Dans cet exemple, on suppose simplement que le jeton est valide
// Si le jeton est valide, passe à la route suivante
next();
};
module.exports = authMiddleware;
Serveur.js
const express = require('express');
const cookieParser = require('cookie-parser');
const authMiddleware = require('./authMiddleware');
const app = express();
// Utilise le middleware cookie-parser pour faciliter la manipulation des cookies
app.use(cookieParser());
// Route de connexion
app.get('/login', (req, res) => {
// Définit un cookie d'authentification avec une valeur fictive
res.cookie('authToken', '123456', { maxAge: 900000, httpOnly: true });
res.send('Vous êtes connecté !');
});
// Route protégée nécessitant une authentification
app.get('/dashboard', authMiddleware, (req, res) => {
res.send('Bienvenue sur le tableau de bord !');
});
// Route de déconnexion
app.get('/logout', (req, res) => {
// Efface le cookie d'authentification
res.clearCookie('authToken');
res.send('Vous êtes déconnecté.');
});
// Démarrage du serveur sur le port 3000
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Serveur Express en cours d'exécution sur le port ${PORT}`);
});
Exemple4
Utiliser les cookies pour stocker des préférences utilisateur.
preferencesMiddleware.js
// preferencesMiddleware.js
const preferencesMiddleware = (req, res, next) => {
// Récupère les préférences utilisateur depuis le cookie ou utilise des valeurs par défaut
const preferences = req.cookies.preferences || { theme: 'light', language: 'en' };
// Ajoute les préférences à l'objet de la requête pour les rendre disponibles aux routes suivantes
req.preferences = preferences;
// Passe à la route suivante
next();
};
module.exports = preferencesMiddleware;
Serveur.js
const express = require('express');
const cookieParser = require('cookie-parser');
const preferencesMiddleware = require('./preferencesMiddleware');
const app = express();
// Utilise le middleware cookie-parser pour faciliter la manipulation des cookies
app.use(cookieParser());
// Utilise le middleware de gestion des préférences pour toutes les routes
app.use(preferencesMiddleware);
// Route pour afficher les préférences de l'utilisateur
app.get('/preferences', (req, res) => {
const { theme, language } = req.preferences;
res.send(`Préférences utilisateur : Theme - ${theme}, Langue - ${language}`);
});
// Route pour modifier les préférences de l'utilisateur
app.post('/update-preferences', (req, res) => {
// Récupère les nouvelles préférences depuis le corps de la requête (simulé)
const { theme, language } = req.body;
// Met à jour les préférences dans le cookie
res.cookie('preferences', { theme, language }, { maxAge: 900000, httpOnly: true });
res.send('Préférences utilisateur mises à jour avec succès !');
});
// Démarrage du serveur sur le port 3000
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Serveur Express en cours d'exécution sur le port ${PORT}`);
});
Exemple 4
Créez un fichier cartMiddleware.js pour le middleware de gestion du panier d'achat
cartMiddleware.js
// cartMiddleware.js
const cartMiddleware = (req, res, next) => {
// Récupère le panier d'achat depuis le cookie ou initialise un panier vide
const cart = req.cookies.cart || [];
// Ajoute le panier d'achat à l'objet de la requête pour le rendre disponible aux routes suivantes
req.cart = cart;
// Passe à la route suivante
next();
};
module.exports = cartMiddleware;
serveur.js
// serveur.js
const express = require('express');
const cookieParser = require('cookie-parser');
const cartMiddleware = require('./cartMiddleware');
const app = express();
// Utilise le middleware cookie-parser pour faciliter la manipulation des cookies
app.use(cookieParser());
// Utilise le middleware de gestion du panier d'achat pour toutes les routes
app.use(cartMiddleware);
// Route pour afficher le contenu du panier d'achat
app.get('/cart', (req, res) => {
const cart = req.cart;
res.send(`Contenu du panier d'achat : ${JSON.stringify(cart)}`);
});
// Route pour ajouter un article au panier d'achat
app.post('/add-to-cart/:item', (req, res) => {
const item = req.params.item;
// Ajoute l'article au panier d'achat
req.cart.push(item);
// Met à jour le cookie du panier d'achat
res.cookie('cart', req.cart, { maxAge: 900000, httpOnly: true });
res.send(`Article ajouté au panier : ${item}`);
});
// Démarrage du serveur sur le port 3000
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Serveur Express en cours d'exécution sur le port ${PORT}`);
});