У меня проблема с экспресс-сессией, я сохранил сеанс с 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
})
);
например, когда я захожу на сервер, печатаю сеанс с идентификатором сеанса, тот же идентификатор сеанса хорошо сохраняется в базе данных.Но когда я вызываю маршрут / bla, сервер печатает другой идентификатор сеанса (кажется, что он не может получить cookie из запроса клиента), и каждый раз, когда я вызываю / bla, печатается новый идентификатор сеанса ..Я просмотрел все связанные темы, включил учетные данные и т. Д., Но это не сработало.
Спасибо за потраченное время.