【发布时间】:2021-06-03 14:12:40
【问题描述】:
我有一个登录系统,应该将用户登录保存到会话中。 我的后端是 Nodejs(express),我的前端是 Reactjs(with redux)。 我正在使用 axios 将用户名和密码发送到后端。我的数据得到评估,用户 ID 被保存到会话中。到目前为止一切顺利,但如果我向另一条路线发送请求,用户会话将消失。 我查看了一些类似的问题,但一无所获。这是我的代码:
这是我的特快专场
const session = require('express-session');
app.use(session({
secret: process.env.SESSION_SECRET,
resave: true,
saveUninitialized: true,
cookie: {maxAge: 259200000, httpOnly: true}
}));
这是我的 axios 请求
注意:我已经为 url:"signin" 设置了基本 url,请求正在进行 到 http://localhost:5000/signin
axios({
method: "post",
url: "signin",
withCredentials: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
Accept: "application/json"
},
data:{
"username": /*username*/`,
"password": `/*password*/``
}
}).then(res => {
if(res.status === 200){
if(res.data.status){
dispatch({type: "LOGGED_IN"}) // just changes the state{authenticated : true}
}else{
dispatch({type: "NOT_LOGGED_IN"}) // just changes the state{authenticated : false}
}
}
})
}
在登录路径中,在评估我的用户名和密码后,我将用户 ID 保存到会话中:
req.session.user = user._id
next()
在下一个中间件中我还有 req.session.user。
我有一个用于检查用户会话的 API
if(req.session.user){
res.send(true);
}else{
res.send(false);
}
如果我在登录后提出请求,我会得到错误
当我登录并使用邮递员发出请求时,它返回 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"})
}
}
})
【问题讨论】:
标签: node.js reactjs express authentication session