因为我在调用expressServer.use(express.session({params}))
时没有定义maxAge,所以cookie的过期时间被设置为“Session”。
我想在登录时添加“记住我”功能。如果选择了“记住我”,有效期将延长至一个月。
我该怎么做呢?我尝试简单地扩展maxAge,但似乎没有做任何事情...
expressServer.get '/blah', (request, response) =>
request.session.cookie.maxAge = 2592000
response.end 'hello there'
我试着做一个简单的服务器来测试更新用户的cookie。我用的是Express 3.0.4
当我访问127.0.0.1:9000/blah时,浏览器cookie的“expires”字段仍然是“session”...
express = require 'express'
expressServer = express()
expressServer.use express.cookieParser()
expressServer.use express.session
secret: 'supersecret'
cookie:
path: '/'
httpOnly: true
expressServer.get '/', (request, response) =>
response.end 'hello'
expressServer.get '/blah', (request, response) =>
request.session.cookie.maxAge = 3600000
response.end 'hello again'
expressServer.listen 9000
console.log 'server running'
5条答案
按热度按时间hm2xizp91#
我在/login页面上有一个复选框,上面写着“记住我”:
然后在我的POST路由到/login中,我做了一些健全性检查,如果设置了
req.body.remember
,则设置会话,否则它只是一个窗口会话:在app.js中添加以下几行(我使用redis):
ibrsph3r2#
将cookie名称设置为value,其中可以是转换为JSON的字符串或对象。路径选项默认为
"/"
。如需进一步参考,请使用以下链接
http://expressjs.com/api.html#res.cookie
hgncfbus3#
如果你想在express 4中实现cookie-sessions的滚动会话,可以这样配置中间件:
请注意,您不需要设置
expires
选项。为了延长您的会话,只需像这样更改它:
注意,在表达式4中没有
req.session.touch()
。vdgimpew4#
我找到了一个似乎对我有效的answer;将其添加到路线的顶部。
llmtgqce5#
或者你可以试试这个,它为我工作: