Pourquoi req.cookies est-il indéfini?

SITUATION:

J’essaie de vérifier si mon utilisateur est authentifié lorsqu’il fait une demande au serveur.

J’ai googlé un peu et trouvé ceci:

Comment afficher une page différente si l’utilisateur est connecté via firebase

Alors voici mon essai d’implémentation de cette solution en utilisant cette bibliothèque:

https://github.com/js-cookie/js-cookie/blob/latest/src/js.cookie.js


CODE:

du côté serveur

var cookies = require("cookie-parser"); router.get("/", function(req, res, next){ const { token } = req.cookies; console.log('Verifying token', token); }); 

côté client

   UPLOAD  const setAppCookie = () => firebase.auth().currentUser && firebase.auth().currentUser.getToken().then(token => { Cookies.set('token', token, { domain: window.location.hostname, expire: 1 / 24, // One hour path: '/', secure: true // If served over HTTPS }); });  

Apparemment, votre code est correct sur le serveur. Par conséquent, le cookie ne doit pas être configuré correctement sur le client.

Copiez / collez la solution trouvée sur la désactivation du cookie sécurisé lorsque vous n’utilisez pas SSL:

  const setAppCookie = () => firebase.auth().currentUser && firebase.auth().currentUser.getToken().then(token => { Cookies.set('token', token, { domain: window.location.hostname, expire: 1 / 24, // One hour path: '/', secure: false // <-- false here when served over HTTP }); }); 

Je pense que vous devriez coller un peu plus de code côté serveur.

Vous devez utiliser express.cookieParser () avant app.router; le middleware est exécuté dans l’ordre, c’est-à-dire qu’il n’arrive même jamais à atteindre cookieParser () avant l’exécution de votre route.

J’ai trouvé le problème!

Mon cookie n’est pas servi sur https (pour le moment).

  const setAppCookie = () => firebase.auth().currentUser && firebase.auth().currentUser.getToken().then(token => { Cookies.set('token', token, { domain: window.location.hostname, expire: 1 / 24, // One hour path: '/', secure: true // If served over HTTPS }); }); 

secure doit être défini sur false .

Avez-vous activé l’intergiciel cookie-parser? ( https://www.npmjs.com/package/cookie-parser )

En plus d’exiger cookie-parsingur, vous devez également configurer votre application express pour l’utiliser

 var express = require('express'); var app = express(); var cookies = require("cookie-parser"); app.use(cookies());