首页 文章

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

提问于
浏览
9

目前还不清楚在使用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 回答

  • 0

    Let's go by parts, as Jack the Ripper said...

    目前还不清楚在使用Redis Cloud和Heroku的情况下使用的正确配置参数是什么,并且无法在线找到正常运行的示例 .

    RedisCloud on Heroku (Node Express Example) @ GitHub

    在Redis Cloud和Heroku作为会话存储(使用快速会话)的情况下,我是否应该重新保存并将unitialized设置为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?

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

    有关扩展的区别:false和extended:true是already explained in this answer .

相关问题