【Express】session 以及redis store
Express有个中间件express-session,使用了该中间件后,代表客户端请求的http.IncomingMessage对象就有了一个session属性,保存了session数据
即请求路由中可直接使用req.session
app.use(express.session({
secret:'lww',
name:'lwwtest',
cookie:{maxAge:1800}
}));
app.get("/",function(req,res){
req.session.user="lww";
});
app.get("/user",function(req,res){
console.log(req.session.user);
});
这样控制台就会打印出lww
另外可能session的认证机制离不开cookie,所以要搭配使用cookieParse中间件
在使用该中间件前要加一句
app.use(cookieParse());
Express还有个中间件connect-redis,将session存储在redis中
var RedisStore = require('connect-redis')(session);
app.use(session({
secret: settings.session_secret,
store: new RedisStore({
port: settings.redis_port,
host: settings.redis_host,
pass : settings.redis_psd,
ttl: 1800 // 过期时间s
}),
resave: true,
saveUninitialized: true
}));