Vue d'ensemble
Express utilise un cookie pour stocker un id de session (avec un chiffrement signature) dans le navigateur de l'utilisateur et ensuite, sur les demandes ultérieures, utilise la valeur du cookie à récupérer les informations de session sont stockés sur le serveur. Ce côté serveur de stockage peut être une mémoire de store (par défaut) ou tout autre magasin qui implémente les méthodes requises (comme connectez-redis).
Détails
Express/Connect crée un 24 caractères base64 chaîne à l'aide de utils.uid(24)
et magasins
en req.sessionID
. Cette chaîne est ensuite utilisée comme valeur dans un cookie.
Côté Client
Signé cookies sont toujours utilisés pour des séances de sorte que la valeur du cookie sont les suivantes
format.
[sid].[signature]
Où [sid] est l'id de session et [signature] est généré par la signature [sid] à l'aide de la clé secrète fournie lors de l'initialisation de la session de middleware.
La signature de l'étape est fait pour empêcher la falsification. Il convient de calcul infeasable à
modifier [sid], puis de les recréer [signature] sans la connaissance de
la clé secrète utilisée. Le cookie de session est toujours vulnérable au vol et à la réutilisation, si aucune
modification de [sid].
Le nom de ce témoin est
connect.sid
Côté Serveur
Si un gestionnaire se produit après l' cookieParser
et session
middleware il
avoir accès à la variable req.cookies
. Il contient un objet JSON dont
les clés sont les clés de cookie et les valeurs sont les valeurs de cookie. Il contient un
clé nommée connect.sid
et sa valeur sera la signature de l'identifiant de session.
Voici un exemple de comment mettre en place un itinéraire qui permettra de vérifier l'existence de la
cookie de session sur chaque demande et imprimer la valeur de la console.
app.get("/*", function(req, res, next){
if(typeof req.cookies['connect.sid'] !== 'undefined'){
console.log(req.cookies['connect.sid']);
}
next(); // call the next middleware
});
Vous aurez également besoin de vous assurer que le routeur (app.use(app.router)
)est incluse après cookieParser
et session
dans votre section configurer.
Ce qui suit est un exemple de données stockés en interne par l'Express/se Connecter.
{
"lastAccess": 1343846924959,
"cookie": {
"originalMaxAge": 172800000,
"expires": "2012-08-03T18:48:45.144Z",
"httpOnly": true,
"path": "/"
},
"user": {
"name":"waylon",
"status":"pro"
}
}
L' user
champ personnalisé. Tout le reste est une partie de la gestion de session.
Exemple de Express 2.5