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

Hel*_*ope 9 session heroku redis node.js express-session

目前还不清楚在使用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
}));
Run Code Online (Sandbox Code Playgroud)

在Redis Cloud和Heroku作为会话存储(使用快速会话)的情况下,我是否应该重新保存并将unitialized设置为true或false?

另外,cookieParser是否影响会话并且需要在那里?或者它是独立的,只是解析来自客户端的cookie,与Redis的服务器端会话存储无关?此外,cookie解析器是否应该将秘密传递给函数?

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

EMX*_*EMX 0

正如开膛手杰克所说,让我们分部分来看……

目前尚不清楚在使用 Redis Cloud 和 Heroku 的情况下使用哪些正确的配置参数,并且在网上找不到有效的示例。

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

在 Redis Cloud 和 Heroku 作为会话存储(使用 Express-Session)的情况下,我应该将 resave 和 saveUnitialized 设置为 true 或 false 吗?

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

此外,cookieParser 是否会影响会话并需要存在?

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

最后,bodyParser 应该出现在 server.use(session) 之前还是之后

中间件body-parser解析传入 HTTP 请求的正文。填充req.body随后在您的路由和中间件中可用的属性。所以顺序不会影响行为。

urlencoded 扩展应该设置为 true 还是 false?

您需要的解析器取决于您的服务器必须处理的请求类型。

扩展:假和扩展:真的区别已经在这个答案中解释了