Heim >Web-Frontend >js-Tutorial >Wie verwalte ich Sitzungen? Verwenden Sie Redis, um Sitzungen unter NodeJS Express zu verwalten
In diesem Artikel wird hauptsächlich die Verwendung von Redis zum Verwalten von Sitzungen unter NodeJS Express vorgestellt. Interessierte Freunde können darauf verweisen.
Prinzip der Sitzungsimplementierung
Es gibt viele Möglichkeiten, die Anforderungsauthentifizierung zu implementieren. Eine der weithin akzeptierten Methoden ist die Verwendung der auf der Serverseite generierten Sitzungs-ID in Kombination mit Die Cookie-Implementierung des Browsers umfasst im Allgemeinen die folgenden vier Schritte:
1. Sitzungs-ID auf der Serverseite generieren
2
3. Extrahieren Sie die Sitzungs-ID aus dem HTTP-Header
4. Erhalten Sie die Identitätsinformationen des Anforderers aus dem serverseitigen Hash basierend auf der Sitzungs-ID
Implementierung der Sitzungsverwaltung mit Express und 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) }));
Implementierungsstapel
Express-Sitzungsaufrufcode nach der Instanziierung (github.com/expressjs/ session)
if (!req.sessionID) { debug('no SID sent, generating session'); generate(); next(); return; }
Methodenaufruf generieren (github.com/expressjs/session)
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); } };
Store.set(sid, session, callback)(github.com/expressjs) aufrufen wenn RedisStore instanziiert wird (/session)
store.set ruft RedisStore.prototype.set(github.com/tj/connect-redis) auf, wobei der Seat-Hashkey das Präfix + sessionId und den Standardwert verwendet Das Präfix ist „sess“, mehrere Wenn Anwendungen denselben Redis-Sitzungsdienst gemeinsam nutzen oder nicht, stellen Sie sicher, dass das Präfix
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); }); };
store.client.set aufgerufen wird (github.com/NodeRedis/node_redis )
rufen Sie schließlich die native redis.hset-Methode auf
Das obige ist der detaillierte Inhalt vonWie verwalte ich Sitzungen? Verwenden Sie Redis, um Sitzungen unter NodeJS Express zu verwalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!