Node.js 会话不';t在express中保存不同路线的数据
我有一个登录系统,可以将用户登录保存到会话中。 我的后端是Nodejs(express),前端是Reactjs(带有redux)。 我正在使用axios将用户名和密码发送到后端。对我的数据进行评估,并将用户ID保存到会话中。到目前为止还不错,但如果我向另一个路由发送请求,用户会话将消失。 我看了一些类似的问题,但一无所获。这是我的密码: 这是我的速成课程Node.js 会话不';t在express中保存不同路线的数据,node.js,reactjs,express,authentication,session,Node.js,Reactjs,Express,Authentication,Session,我有一个登录系统,可以将用户登录保存到会话中。 我的后端是Nodejs(express),前端是Reactjs(带有redux)。 我正在使用axios将用户名和密码发送到后端。对我的数据进行评估,并将用户ID保存到会话中。到目前为止还不错,但如果我向另一个路由发送请求,用户会话将消失。 我看了一些类似的问题,但一无所获。这是我的密码: 这是我的速成课程 const session = require('express-session'); app.use(session({ secr
const session = require('express-session');
app.use(session({
secret: process.env.SESSION_SECRET,
resave: true,
saveUninitialized: true,
cookie: {maxAge: 259200000, httpOnly: true}
}));
这是我的axios请求
注意:我已经为url设置了基本url:“登录”,请求正在进行
到http://localhost:5000/signin
在登录路径中,在评估用户名和密码后,我将用户ID保存到会话中:
req.session.user = user._id
next()
在下一个中间件中,我仍然有req.session.user
我有一个用于检查用户会话的API
if(req.session.user){
res.send(true);
}else{
res.send(false);
}
如果我在登录后向它发出请求,我会得到false
当我使用postman登录并发出请求时,返回true,但使用axios时返回false
我对该API的axios请求是:
axios({
method: "post",
url: "checklogin",
withCredentials: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
Accept: "application/json"
}
}).then(res => {
if(res.status === 200){
if(res.data){
dispatch({type: "LOGGED_IN"})
}else{
dispatch({type: "NOT_LOGGED_IN"})
}
}
})
好的,问题解决了。我将withCredentials设置为false,因为当它为true时,我不断收到CORS错误。如果我的来源(在cors模块设置中)等于“*”凭据是不允许的,因此我将我的来源更改为我的前端域,并将凭据设置为true(在cors模块设置中),现在我得到了true响应
axios({
method: "post",
url: "checklogin",
withCredentials: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
Accept: "application/json"
}
}).then(res => {
if(res.status === 200){
if(res.data){
dispatch({type: "LOGGED_IN"})
}else{
dispatch({type: "NOT_LOGGED_IN"})
}
}
})