目前还不清楚在使用Redis Cloud和Heroku的情况下使用的正确配置参数是什么,并且无法在线找到正常运行的示例 .
这是我目前的代码:
const express = require('express')
const session = require('express-session')
const RedisStore = require('connect-redis')(session);
...
const server = express()
server.use(bodyParser.json())
server.use(bodyParser.urlencoded({ extended: false }))
server.use(cookieParser())
server.use(session({
secret: token_secret,
// create new redis store.
store: new RedisStore({ url: 'redis://rediscloud:...@...redislabs.com:11111'}),
resave: true,
saveUninitialized: true
}));
在Redis Cloud和Heroku作为会话存储(使用快速会话)的情况下,我是否应该重新保存并将unitialized设置为true或false?
另外,cookieParser是否影响会话并且需要在那里?或者它是独立的,只是解析来自客户端的cookie,与Redis的服务器端会话存储无关?另外,cookie解析器是否应该将秘密传递给函数?
最后,bodyParser应该在server.use(session)之前还是之后,并且urlencoded extended应该设置为true还是false?
1 回答
Let's go by parts, as Jack the Ripper said...
RedisCloud on Heroku (Node Express Example) @ GitHub
app.use(expressSession({resave: false, saveUninitialized: false}))
减少了会话存储的访问次数 . 这有利于硬件资源和性能(通常最好将它们设置为false) .不再是:
express-session
中间件,曾经需要cookie-parser
,(但当前版本的express-session
直接读/写cookie) .body-parser
中间件解析传入的HTTP请求的主体 . 填充req.body
属性,然后在您的路由和中间件中使用该属性 . 所以订单不会影响行为 .您需要的解析器取决于您的服务器必须处理的请求类型 .
有关扩展的区别:false和extended:true是already explained in this answer .