Node.js 使用express Session会丢失会话数据

Node.js 使用express Session会丢失会话数据,node.js,cross-domain,express-session,Node.js,Cross Domain,Express Session,我使用angularjs在devMode中工作,使用cors中间件在express会话中工作,我从localhost:4200运行前端,从localhost:8080运行后端 在登录请求中,我在会话中设置用户数据,然后在调用“/api/contacts”时,会话用户数据未定义。 我试图用session.save()保存会话,但它不起作用。 我注意到通话之间sessionID发生了变化 我在谷歌上搜索了几个小时,但没有找到任何解决方案 这是对“/api/contacts”的前端调用 这是serve

我使用angularjs在devMode中工作,使用cors中间件在express会话中工作,我从localhost:4200运行前端,从localhost:8080运行后端

在登录请求中,我在会话中设置用户数据,然后在调用“/api/contacts”时,会话用户数据未定义。 我试图用session.save()保存会话,但它不起作用。 我注意到通话之间sessionID发生了变化

我在谷歌上搜索了几个小时,但没有找到任何解决方案

这是对“/api/contacts”的前端调用

这是server.js的一部分

app.use(cors({origin: [
  "http://localhost:4200"
], credentials: true,
}));

let sess = session({
  secret: 'my secret',
  resave: false,
  saveUninitialized: false,
  store: new MemoryStore({
    checkPeriod: 60000 * 5 // prune expired entries every 24h
  }),
  cookie: { 
    secure: app.get('env') === 'production'?true:false,
    maxAge: 60000 * 5 ,

  }
})

app.use(sess)

// Initialize the app.
var server = app.listen(process.env.PORT || 8080, function () {
});

const authMiddleware = (req, res, next) => {
    // here req.session.user IS undefined
    if(req.session && req.session.user) {
      next();
    } else {
      res.status(403).send({
        status: 403,
        errorMessage: 'You must be logged in.'
      });
    }
};



app.get("/api/contacts",  authMiddleware,(req, res) => {
    // some code will run if authMiddleware pass
});





app.post('/api/login', validatePayloadMiddleware, (req, res) => {
  if (req.body.username === "xx.xxxx@xxxx.xxx" && req.body.password === "xxxxxxx")
  {

    let user = {
      id: req.sessionID,
      username: req.body.username,
      firstName: "Fabio",
      lastName: "Spadaro",
    };
    req.session.user = user;
    req.session.save((err) => {
      console.log(err) 
     });

    return res.status(200).json(user);
  }
  else
  {
    let body = {
          error: true,
          errorMessage: 'Permission denied!'
    };
    return res.status(403).json(body);
  }
});
app.use(cors({origin: [
  "http://localhost:4200"
], credentials: true,
}));

let sess = session({
  secret: 'my secret',
  resave: false,
  saveUninitialized: false,
  store: new MemoryStore({
    checkPeriod: 60000 * 5 // prune expired entries every 24h
  }),
  cookie: { 
    secure: app.get('env') === 'production'?true:false,
    maxAge: 60000 * 5 ,

  }
})

app.use(sess)

// Initialize the app.
var server = app.listen(process.env.PORT || 8080, function () {
});

const authMiddleware = (req, res, next) => {
    // here req.session.user IS undefined
    if(req.session && req.session.user) {
      next();
    } else {
      res.status(403).send({
        status: 403,
        errorMessage: 'You must be logged in.'
      });
    }
};



app.get("/api/contacts",  authMiddleware,(req, res) => {
    // some code will run if authMiddleware pass
});





app.post('/api/login', validatePayloadMiddleware, (req, res) => {
  if (req.body.username === "xx.xxxx@xxxx.xxx" && req.body.password === "xxxxxxx")
  {

    let user = {
      id: req.sessionID,
      username: req.body.username,
      firstName: "Fabio",
      lastName: "Spadaro",
    };
    req.session.user = user;
    req.session.save((err) => {
      console.log(err) 
     });

    return res.status(200).json(user);
  }
  else
  {
    let body = {
          error: true,
          errorMessage: 'Permission denied!'
    };
    return res.status(403).json(body);
  }
});