Cet article présente principalement l'explication détaillée de l'utilisation de redis pour gérer les sessions sous nodejs express. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer.
Principe de mise en œuvre de la session
Il existe de nombreuses façons de mettre en œuvre l'authentification des demandes. L'une des méthodes largement acceptées consiste à utiliser l'ID de session généré côté serveur combiné avec le. Implémentation des cookies du navigateur La gestion des sessions comprend généralement les quatre étapes suivantes :
1. Générer l'ID de session côté serveur
2. Stocker l'ID de session côté serveur et client.
3. Extrayez l'ID de session de l'en-tête HTTP
4 Obtenez les informations d'identité du demandeur à partir du hachage côté serveur en fonction de l'ID de session
<.>Implémentation de la gestion de session à l'aide d'Express et Redis
var session = require('express-session'); var RedisStrore = require('connect-redis')(session); var config={ "cookie" : { "maxAge" : 1800000 }, "sessionStore" : { "host" : "192.168.0.13", "port" : "6379", "pass" : "123456", "db" : 1, "ttl" : 1800, "logErrors" : true } app.use(session({ name : "sid", secret : 'Asecret123-', resave : true, rolling:true, saveUninitialized : false, cookie : config.cookie, store : new RedisStrore(config.sessionStore) }));
Pile d'implémentationCode d'appel de session express après instanciation (github.com/expressjs/ session)
if (!req.sessionID) { debug('no SID sent, generating session'); generate(); next(); return; }
store.generate = function(req){ req.sessionID = generateId(req); req.session = new Session(req); req.session.cookie = new Cookie(cookieOptions); if (cookieOptions.secure === 'auto') { req.session.cookie.secure = issecure(req, trustProxy); } };
RedisStore.prototype.set = function (sid, sess, fn) { var store = this; var args = [store.prefix + sid]; if (!fn) fn = noop; try { var jsess = store.serializer.stringify(sess); } catch (er) { return fn(er); } args.push(jsess); if (!store.disableTTL) { var ttl = getTTL(store, sess); args.push('EX', ttl); debug('SET "%s" %s ttl:%s', sid, jsess, ttl); } else { debug('SET "%s" %s', sid, jsess); } store.client.set(args, function (er) { if (er) return fn(er); debug('SET complete'); fn.apply(null, arguments); }); };
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!