vue-cli(vue3) +node.js + express 跨域使用 后端session内容不保存
新人刚刚接触vue,想用js做个全栈,在登录状态保存时候遇到了SESSION,不被保存的问题。
开始以为是跨域问题,后来经过试验,发现并不是。
下图通过查看网络中的请求,发现每次请求的COOKIE是一样且存在的。
并且通过req.sessionid()函数的输出,发现每次session也是一样的,但是数据就是不存在。

所以归根结底是session没保存,尤其是使用post方法时,是不会自动保存的。需要我们手动设置。
router.post('/queryUser', (req, res) => {
console.log('1:')
console.log(req.sessionID);
console.log(req.session)
var sql = $sql.user.query;
var params = req.body;
conn.query(sql, [params.username], function(err, result) {
if (err) {
console.log(err);
}
if (result&&result[0]) {
if (result[0].password === params.password) {
jsonWrite(res, '登录成功');
req.session.username = params.username;
req.session.name = result[0].name;
req.session.save(); //位置1
}
else{
jsonWrite(res, '登录失败,请检查');
}
//jsonWrite(res, result);
}
else {
jsonWrite(res, '用户不存在');
}
})
req.session.save(); //位置2
});
同时还要注意的是要放在位置1才能正确保存SESSION。
下面是一些用到的其他配置:
// node 后端服务器 const userApi = require('./api/userApi'); const fs = require('fs'); const path = require('path'); const express = require('express'); const session = require("express-session"); const cookieParser = require('cookie-parser'); const app = express(); app.use(cookieParser('alienergy')); app.use(session({ secret: 'alienergy', resave: true, saveUninitialized: true })) app.use(express.json()) //处理为json格式 app.use(express.urlencoded({ extended: false })) //保证处理值得格式是想要的格式。 // 后端api路由 app.use('/api/user', userApi); // 监听端口 app.listen(3000); console.log('success listen at port:3000......');
浙公网安备 33010602011771号