使用Redis Cloud和Heroku正确configuration节点会话存储

目前还不清楚使用Redis Cloud和Heroku的正确configuration参数是什么,并且在线找不到function实例。

这是我现在的代码:

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作为会话存储(使用快速会话),是否应该将resave和saveUnitialized设置为true或false?

此外,cookieParser会影响会话,需要在那里? 或者是单独parsing来自客户端的cookie,而与Redis的服务器端会话存储无关? 另外,如果cookieparsing器有一个秘密传递给函数?

最后,bodyParser应该在server.use(session)之前还是之后,并且应该将urlencoded extended设置为true或false?

我们按部分去吧,就像开膛手杰克说的那样。

目前还不清楚使用Redis Cloud和Heroku的正确configuration参数是什么,并且在线找不到function实例。

Heroku上的RedisCloud(Node Express示例)@GitHub

如果Redis Cloud和Heroku作为会话存储(使用快速会话),是否应该将resave和saveUnitialized设置为true或false?

app.use(expressSession({resave: false, saveUninitialized: false}))减less了会话存储被访问的次数。 这有利于硬件资源和性能(通常最好将它们设置为false)。

此外,cookieParser会影响会话,需要在那里?

不再是: express-session中间件,用于需要cookie-parser (但当前版本的express-session直接读/写cookie)。

最后,bodyParser应该在server.use(session)之前或之后。

body-parser中间件parsing传入HTTP请求的主体。 req.body属性,然后在您的路由和中间件中可用。 所以顺序不会影响行为。

并应urlencoded扩展设置为真或假?

您将需要的parsing器取决于您的服务器必须处理的请求types。

关于扩展:false和extended:true的区别已经在这个答案中解释了 。