Session 不在 express 中保存不同路线的数据

Session doesn't save data for different routes in express

我有一个登录系统,应该将用户登录保存到 session。 我的 back-end 是 Nodejs(express) 而我的 front-end 是 Reactjs(with redux)。 我正在使用 axios 将用户名和密码发送到 back-end。我的数据得到评估,用户 ID 被保存到 session。到目前为止一切顺利,但如果我向另一条路线发送请求,用户 session 将会消失。 我看了一些类似的问题,但一无所获。这是我的代码:

这是我的express-session

const session = require('express-session');

app.use(session({
    secret: process.env.SESSION_SECRET,
    resave: true,
    saveUninitialized: true,
    cookie: {maxAge: 259200000, httpOnly: true}
}));

这是我的 axios 请求

Note: I already set base url for url: "signin", the request is going to 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 保存到 session:

req.session.user = user._id
next()

下一个中间件我还有req.session.user.

我有一个 API 用于检查用户 session

if(req.session.user){
    res.send(true);
}else{
    res.send(false);
}

如果我在登录后向它发出请求,我得到 false

When I login and make the request with postman it returns true but with axios I get 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 模块设置中),现在我得到了真实的响应。