根据 https://github.com/mozilla/node-client-sessions#usage
var sessions = require("client-sessions");
app.use(sessions({
cookieName: 'mySession', // cookie name dictates the key name added to the request object
secret: 'blargadeeblargblarg', // should be a large unguessable string
duration: 24 * 60 * 60 * 1000, // how long the session will stay valid in ms
activeDuration: 1000 * 60 * 5 // if expiresIn < activeDuration, the session will be extended by activeDuration milliseconds
}));
我希望我的用户 session 最多持续 30 天。如果我将 duration
设置为 30 天,将 activeDuration
设置为 30 天,我认为我将以 60 天的长 session 结束。
如果我将 duration
设置为 15 天并将 activeDuration
设置为 15 天,那么登录后什么都不做的用户不会在 15 天内注销(不是我期望那种用户行为,而是我的假设是否正确?)
我想要的是每次用户访问该站点时,在他们需要重新登录之前有 30 天的时间。我如何获得这种行为?
最佳答案
您可以使用 express-session NPM 来实现您的功能:
这里是代码和引用链接:
代码:
let session = require('express-session')
let time = new Date(Date.now() + (30 * 86400 * 1000))
let app = express()
let sess = {
secret: 'keyboard_cat',
cookie: { maxAge: time }
}
if (app.get('env') === 'production') {
app.set('trust proxy', 1) // trust first proxy
sess.cookie.secure = true // serve secure cookies
}
app.use(session(sess))
app.use(session({
genid: function(req) {
return genuuid() // use UUIDs for session IDs
},
secret: 'keyboard cat'
}))
//call your route and do session things here
app.get('/', function(req, res, next) {
if (req.session.views) {
req.session.views++
res.setHeader('Content-Type', 'text/html')
res.write('<p>views: ' + req.session.views + '</p>')
res.write('<p>expires in: ' + (req.session.cookie.maxAge / 1000) + 's</p>')
res.end()
} else {
req.session.views = 1
res.end('welcome to the session demo. refresh!')
}
})
有关更多信息,请参阅此链接:
关于javascript - 如何使用客户端 session 持续时间和 activeDuration 使 session 持续最多 30 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637252/