-
-
Notifications
You must be signed in to change notification settings - Fork 75
Open
Description
Hello,
I'm facing an issue when inside a route where the req.session.id will always be a new one, thus retaining no information from the user cookie.
EDIT : test yourself with Docker : https://github.com/Leni-Vienne/nodePgConnect_issue
Here is some code of the backend :
const sessionStore = new pgSession({
pool: pool,
tableName: 'sessions'
})
app.use(expressSession({
store: sessionStore,
secret: process.env.CLE_COOKIE,
resave: false,
saveUninitialized: false,
unset: 'destroy',
cookie: {
maxAge: 60 * 60 * 1000,
secure: false,
httpOnly: true,
},
}));
app.post('/api/connexion', async (req, res) => {
try {
if (req.session) {
console.log("'old id' : ", req.session.id) // actually a brand new id, not in the database...
if (req.session.id_user) { // undefined
let user = await getUserFromId(req.session.id_user)
return res.json(user)
}
}
let mail = (process.env.VITE_ENVIRONMENT === "dev") ? process.env.CAS_MOCK : await casAuth(req.body.ticket)
if (mail) {
let user = await getUserFromMail(mail)
if (user) {
console.log(req.session.id) // the same new one
req.session.regenerate(function (err) {
if (err) throw (err)
console.log("new id : ",req.session.id) // a new id, which is expected and savec correctly
req.session.id_user = user.id_user
req.session.groupe = user.groupe
req.session.save(function (err) {
if (err) throw err(err)
res.json(user)
})
})
}
}
} catch (error) {
console.error(`api/connexion : ${error}`)
res.json({ error: 'Une erreur est survenue lors de la connexion.' })
}
});
req.session.save() does save successfully in the databse with 'id_user' and 'groupe' at the end of the sess JSON. I had a previous implementation with mySQL that worked flawlessly, it was almost a drop in replacement up to this point. Same with the default memory storage, it's able to retrieve informations about the user flawlessly.
I would love to get some help, thanks :)
Metadata
Metadata
Assignees
Labels
No labels