JrmLg / Simple-Sequelize-Dashboard

MIT License
2 stars 0 forks source link

Fix order of our middleware with express-session middleware #8

Open JrmLg opened 8 months ago

JrmLg commented 8 months ago

L'utilisation d'une session admin pour notre middleware peut rentrer en conflits avec celui de l'app dans lequel il est inclut. Cela dépend de l'ordre dans lequel les middleware sont monté.

Si le client utilise les sessions dans son app, alors il doit monter notre middleware avant celui des sessions.

Par exemple ça c'est incorrect : (cas incorrect) ⛔

app.use(session())
app.use(useSimpleDash(sequelize))

Mais ça c'est bon : (cas correct)

app.use(useSimpleDash(sequelize))
app.use(session())

Dans le cas incorrect, un seul cookie est envoyer (celui de l'app session). Et la session partage toutes les données de l'app + du dashboard.

Dans le cas correct, deux cookies sont envoyés, et aucune données n'est partagé entre les sessions.

J'ai l'impression que vu que app.use(session) marche sur toutes les routes, lorsqu'on entre dans notre middleware, c'est déjà le middleware session de l'app qui définit la session et le cookie. Dans le cas où on monte notre middleware avant, étant donné que j'ai monté le middleware session sur la 'baseUrl', lorsqu'on tombe sur notre dashboard c'est notre middleware session qui définit le cookie et la session, et lorsque la requete vas sur le site, notre middleware n'est jamais appelé car il est sur la 'baseUrl' donc c'est le middleware session de l'app qui prend le relais d'où les deux cookies et le comportement attendu, ne pas mélanger les données des deux sessions.