Problème de persistance de session avec express-session

Par mest, il y a 1 an


Bonjour à tous,

Je travaille actuellement sur l'implémentation d'un système de connexion pour mon site web avec express-session. Toutefois, j'ai rencontré un problème : lorsque je teste mon code avec Postman, tout fonctionne correctement, mais sur le navigateur (Firefox), la session ne semble pas se sauvegarder correctement se qui m'empêche de pouvoir verifié si un utilisateur est connecté
(J'utilise Vue.js pour le front)

Voici les symptômes :

Session { cookie: { path: '/', _expires: 2024-12-25T10:19:06.237Z, originalMaxAge: 86400000, httpOnly: true, secure: false, sameSite: 'lax' }, user: { _id: new ObjectId('6769b32a3e7297fc596228ed'), email: 'new@hotmail.com', password: '...', name: 'Louis', surname: 'Bertou', birthDate: '2024-12-12', __v: 0 } } Session { cookie: { path: '/', _expires: 2024-12-25T10:29:36.721Z, originalMaxAge: 86400000, httpOnly: true, secure: false, sameSite: 'lax' } }

Voici les requêtes que j'envoie pour tester la connexion :

Requête pour se connecter :

fetch("http://127.0.0.1:52807/user/login", { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(credentials), credentials: 'include', });

Requête pour vérifier si l'utilisateur est connecté :

const response = await fetch('http://localhost:52807/user/connected', { method: 'GET', credentials: 'include', });

Code côté serveur pour enregistrer la session à la connexion :

// Sauvegarde de l'utilisateur dans la session req.session.user = user; console.log("Session: ", req.session); res.status(200).json({ message: "User logged in", userId: user._id });

Configuration CORS et session dans mon serveur Express :

// CORS app.use(cors({ origin: ['http://localhost:4173'], credentials: true, allowedHeaders: ['Content-Type', 'Authorization'], methods: ['GET', 'POST'], optionsSuccessStatus: 200, })); // Express-session app.use(session({ secret: process.env.SESSION_SECRET, resave: true, saveUninitialized: true, cookie: { secure: false, // Non sécurisé car en développement (à mettre à true en production avec HTTPS) httpOnly: true, maxAge: 1000 * 60 * 60 * 24, // 1 jour sameSite: 'lax', }, }));

Questions :

Merci d'avance pour vos retours !

Aucune réponse