您使用的是 Express,因此使用的是 Connect,因此请使用 Connect 中间件。特别是会话中间件。Connect 的会话中间件具有存储的概念(存储会话内容的地方)。该存储可以在内存中(默认)或数据库中。因此,使用 redis 存储 (connect-redis)。
var express = require('express'),
RedisStore = require('connect-redis')(express),
util = require('util');
var redisSessionStoreOptions = {
host: config.redis.host, //where is redis
port: config.redis.port, //what port is it on
ttl: config.redis.ttl, //time-to-live (in seconds) for the session entry
db: config.redis.db //what redis database are we using
}
var redisStore = new RedisStore(redisSessionStoreOptions);
redisStore.client.on('error', function(msg){
util.log('*** Redis connection failure.');
util.log(msg);
return;
});
redisStore.client.on('connect', function() {
util.log('Connected to Redis');
});
app = express();
app.use(express.cookieParser());
app.use(express.session({
store: redisStore,
cookie: { path: '/',
httpOnly: true, //helps protect agains cross site scripting attacks - ie cookie is not available to javascript
maxAge: null },
secret: 'magic sauce', //
key: 'sessionid' //The name/key for the session cookie
}));
现在,Connect 会话魔术将会话详细信息放在传递到每个路由的“req”对象上。这样,您不需要到处传递 redis 客户端。让 req 对象为您工作,因为无论如何您都可以在每个路由处理程序中免费获得它。
确保你做了: npm install connect-redis