express-session刷新后session丢失
环境
前端使用Axios发送请求配置了axios.defaults.withCredentials = true
后端使用express设置了header和session
// CORS
app.use('*', (req, res, next) => {
res.header('Access-Control-Allow-Origin', 'url')
res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With')
res.header('Access-Control-Allow-Credentials', 'true')
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
if (req.method == 'OPTIONS') return res.status(200).send('OK')
next()
});
// session
app.use(session({
secret: 'sec',
resave: true,
saveUninitialized: false,
// store: new SQLiteStore, // 目前的解决方案是存储到本地数据库中
cookie: {
maxAge: 1000 * 60 * 30
}
}))
使用场景
用于微信访问时验证是否含有code或code是否重复,不含code则请求服务获取code,code重复时则拉取新code,获取code后存储到session
if(!req.query.code || (!!req.session.code && req.session.code == req.query.code)) return res.redirect('url/wx_login?return_uri=' + return_uri + '&AppID=' + AppID + '&scope=' + scope);
req.session.code = req.query.code;
疑问
- 存储到
req.session
的code刷新后丢失,无法于req.query.code
做对比判断code是否重复 - 发现
req.sessionID
在页面刷新后变更,是否应该与之前的连接相同 - 后端获取
req.cookies
一直显示undefined,是否cookie有问题
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论