Express 4.0,带有奇数警告消息的快速会话


105

我正在尝试通过使用Express 4.x设置Node.js应用程序。在经历了中间件删除问题之后,我终于使它工作了。

但是,以下代码行中有一些警告消息:

app.use(session({secret: '<mysecret>'})

这些警告是:

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass resave option; default value will change at lib\config\express.js:55:11

Sun, 29 Jun 2014 12:45:10 GMT express-session deprecated pass saveUninitialized option; default value will change at lib\config\express.js:55:11

在文档中,resave和saveUninitialized的默认值为true。

因此,更改代码以读取

app.use(session({secret: '<mysecret>', 
                 saveUninitialized: true,
                 resave: true}));

摆脱了警告。

因此,要解决问题的重点:

如果它们是默认值,为什么我必须传递这些值,为什么我不必传递其他选项?


1
因为这些默认值会更改,并且在更改时可以避免将它们显式传递给中间件而导致的错误
soulcheck 2014年

12
我喜欢他们的帮助方式,不要告诉您默认选项是什么
-Brade

4
无论是resavesaveUnitialized是布尔默认将true在1.7.2:github.com/expressjs/session
CFS

1
@cfs:应该是saveUninitialized。我复制了您发布的内容,浪费了45分钟,试图找出警告没有消失的情况。后来我意识到有一个拼写错误。哈哈:D
AdityaParab 2015年

1
抱歉,浪费时间Maverick :)不幸的是,该评论太旧了,我无法编辑,否则我将纠正我的错字:/
cfs

Answers:


68

如警告所述,默认值将更改,因此它们希望通过立即显式设置这些值来确保在默认值发生更改时(不久的将来),您不会遇到意外行为。


哦,所以这两个参数的默认值会在某个时候改变吗?这更有意义!谢谢。
jmls 2014年

3
传奇,它仍然会很快改变:)
Qcom 2015年

2
从未来这里。
仍将


5

我的代表不足,无法将此添加为评论。我将此添加为Ben答案的默认值。

secret: process.env.SESSION_SECRET || '<mysecret>',

2
app.use(session({
  cookieName: 'session',
  secret: 'eg[isfd-8yF9-7w2315df{}+Ijsli;;to8',
  duration: 30 * 60 * 1000,
  activeDuration: 5 * 60 * 1000,
  httpOnly: true,
  secure: true,
  ephemeral: true,
  resave: true,
  saveUninitialized: true
}));

对我有用,也许会议只需要一些额外的设置。谢谢
martinhajny
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.