이 글은 주로 nodejs express에서 세션을 관리하기 위해 redis를 사용하는 것에 대한 자세한 설명을 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.
세션 구현 원리
요청 인증을 구현하는 방법에는 여러 가지가 있습니다. 널리 사용되는 방법 중 하나는 서버 측에서 생성된 세션 ID를 결합하여 사용하는 것입니다. 브라우저의 쿠키 구현 세션 관리에는 일반적으로 다음 네 단계가 포함됩니다.
1. 서버 측에서 세션 ID 생성
2.
3. HTTP 헤더에서 세션 ID를 추출합니다
4. 세션 ID를 기반으로 서버 측 해시에서 요청자의 신원 정보를 얻습니다
Express 및 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) }));
구현 스택
인스턴스화 후 Express 세션 호출 코드(github.com/expressjs/session)
if (!req.sessionID) { debug('no SID sent, generating session'); generate(); next(); return; }
메서드 호출 생성(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/session) 호출
RedisStore는 인스턴스화됩니다.store.set는 RedisStore.prototype.set(github.com/tj/connect-redis)를 호출합니다. 여기서 좌석 해시키는 접두사 + sessonId를 사용하고 접두사의 기본값은 'sess'입니다. . 여러 애플리케이션이 공유하고 동일하게 공유하지 않음 Redis 세션을 제공할 때 접두어
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를 호출하여 설정해야 합니다(github.com/NodeRedis/node_redis)
마지막으로 기본 redis.hset 메소드를 호출하세요
위 내용은 세션을 관리하는 방법은 무엇입니까? redis를 사용하여 nodejs express에서 세션 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!