Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 会话不';t在express中保存不同路线的数据_Node.js_Reactjs_Express_Authentication_Session - Fatal编程技术网

Node.js 会话不';t在express中保存不同路线的数据

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

我有一个登录系统,可以将用户登录保存到会话中。 我的后端是Nodejs(express),前端是Reactjs(带有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设置了基本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"})
            }
        }
    })