使用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的区别已经在这个答案中解释了 。