我正在使用 express/nodejs 存储登录到 redis 的 session ,代码如下:
app.use(express.session({
key: 'myappname.sid',
secret: "Some Secret!!!",
store : new RedisStore({
host : '127.0.0.1',,
port : 6379,
}),
cookie : {
maxAge : 604800 // one week
}
}));
我通过以下方式检查登录状态:
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login')
}
当我登录成功时,我看到了 chrome cookie 和 redis 的 session 。 但是,如果我只删除 chrome cookie 或 redis 上的一个 session ,应用程序将没有登录状态。 为什么认证状态同时依赖于 chrome cookie 和 redis。
第二个问题:我是这样加域的
cookie : {
domain:"localhost", // or ".localhost"
maxAge : 604800 // one week
}
但是当登录成功时,chrome cookie 上没有 session 存储,这是为什么?
最佳答案
对于您的第二个问题,cookie 的 maxAge 需要以毫秒为单位的时间。您的 cookie 将在 604 秒后过期。
对于第一个,这是网络安全的正确工作方式。
关于node.js - 使用expressjs/nodejs store session登录到redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168183/