Express会话cookie问题与反应

时间:2018-12-03 20:14:17

标签: reactjs express session cookies express-session

我在express-session上遇到问题,我在mysql上存储了我的会话,可以正常工作:

app.use(
      session({
        store: new MySQLStore({ createDatabaseTable: true }, bdd),
        secret: process.env.COOKIE_SECRET,
        cookie: { secure: false, maxAge: 30 * 24 * 60 * 60 * 1000 },
        resave: false,
        saveUninitialized: false
      })
);

此后,在用户登录时,我验证登录信息(可以正常工作),并使用一些已初始化的变量创建会话:

if (isGoodPass) {
        // pass ok, init session values
        req.session.userid = bdduser.id;
        req.session.email = requser.email;
        req.session.pseudo = bdduser.pseudo;
        console.log("logid : ", req.session.id);
        res.status(200).send("oui");
} 
else res.status(404).send("non");

那也可以。会话已很好地存储在数据库中,值已初始化,确定。 之后,我使用以下路由测试会话:

app.get("/bla", (req, res) => {
    res.setHeader("Content-Type", "text/plain");
    if (req.session == null) {
      console.log("pas de session");
      res.status(200).send("pas de session");
    } else {
      console.log("sessid :", req.session.id);
      res.status(200).send("id :" + req.session.userid);
    }
});

问题来了,我的反应代码这样调用/ bla路由:

const response = await axios.get("http://localhost:8080/bla", {
        withCredentials: true
 });

并且在服务器中启用了cors:

app.use(
  cors({
    origin: "http://localhost:3000", // my react domain
    credentials: true
  })
);

例如,当我登录服务器时,打印会话的会话ID,相同的会话ID会很好地存储在数据库中。但是,当我调用/ bla路由时,服务器会打印另一个会话ID(似乎他无法从客户端请求中获取cookie),并且每次我调用/ bla时都会打印一个新的会话ID。我已经查看了所有相关主题,打开了凭据等等,但是那没用。

谢谢您的时间。

0 个答案:

没有答案