将maxAge与Express.js一起使用的正确方法是什么?

Hoa*_*Hoa 17 node.js express

我看到了几个变化.假设我希望我的cookie在一秒钟后过期.我应该用吗?

app.use(express.session({ secret: 'mysecret',  maxAge: new Date(Date.now() + 1000)}));
Run Code Online (Sandbox Code Playgroud)

要么

app.use(express.session({ secret: 'mysecret',  maxAge: 1000}));
Run Code Online (Sandbox Code Playgroud)

要么

app.use(express.session({ secret: 'mysecret',  cookie: {maxAge: new Date(Date.now() + 1000)}}));
Run Code Online (Sandbox Code Playgroud)

要么

app.use(express.session({ secret: 'mysecret',  cookie: {maxAge: 1000}}));
Run Code Online (Sandbox Code Playgroud)

另外假设我已将cookie设置为正确到期且已过期.如果用户没有重新启动浏览器,他们仍会保留cookie信息,直到他们这样做为止?

250*_*50R 21

我认为你最好直接看源.

对于Express,它使用连接中间件,这里是会话代码https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L67

并且在连接站点http://www.senchalabs.org/connect/session.html上有更多文档

所以你可以做到

app.use(express.session({ secret: 'mysecret',  cookie: {expires: new Date(Date.now() + 1000)}}));
Run Code Online (Sandbox Code Playgroud)

要么

app.use(express.session({ secret: 'mysecret',  cookie: {maxAge: 1000}}));
Run Code Online (Sandbox Code Playgroud)

  • 我认为在第一种方法中使用"expires"选项的方式不正确!因为此处的中间件配置只会被评估一次,所有用户将具有相同的到期日期. (4认同)