req.session не сохраняется в браузере? - PullRequest
0 голосов
/ 21 июня 2020

Итак, у меня очень типичный запрос.

Я новичок в этом, и я создаю простое веб-приложение для входа в систему с использованием узла и express -сессии, которые хранятся в MongoDB.

Вот мой код:

sessionRouter.post("", async(req, res) => {
  try {
    const user = await User.findByCredentials(
      req.body.email,
      req.body.password
    );


    if (user) {
      const sessionUser = sessionizeUser(user);

      req.session.user = sessionUser;

      console.log(req.session.id);
      res.send(req.session.user);
    } else {
      throw new Error("invalid details.");
    }
  } catch (e) {
    res.status(400).send(e);
  }
});

//route to logout
sessionRouter.delete("", ({
  session
}, res) => {
  try {
    const user = session.user;

    if (user) {
      console.log(session.id);
      session.destroy((err) => {
        if (err) console.log(err);
        res.clearCookie(process.env.SESS_NAME);
        res.send(session.id);
      });
    } else {
      throw new Error("Something went wrong");
    }
  } catch (err) {
    console.log("things went wrong!");
    //res.status(422).send(JSON.stringify(err));
  }
});

Я сохраняю атрибут 'user' для req.session, когда вызываю API входа, но когда я вызываю API выхода, он генерирует совершенно новый сеанс!.

Вещи go плавно, когда я использую почтальон для вызова этих конечных точек, но при использовании браузера ничего не работает.

Это вызывающие функции, которые я использую в браузере:

const loggerin = () => {
  var myHeaders = new Headers();
  myHeaders.append("Content-Type", "application/json");
  myHeaders.append("Connection", "keep-alive");

  var raw = JSON.stringify({
    email: "xxxxxxxxxx",
    password: "xxxxxx",
  });

  var requestOptions = {
    method: "POST",
    headers: myHeaders,
    body: raw,
    redirect: "follow",
  };

  fetch("http://localhost:3001/api/session", requestOptions)
    .then((response) => response.text())
    .then((result) => console.log(result))
    .catch((error) => console.log("error", error));
};

const loggerout = () => {
  var myHeaders = new Headers();

  myHeaders.append("Content-Type", "text/plain");
  myHeaders.append("Connection", "keep-alive");

  var requestOptions = {
    method: "DELETE",
  };

  fetch("http://localhost:3001/api/session", requestOptions)
    .then((response) => response.text())
    .then((result) => console.log(result))
    .catch((error) => console.log("error", error));
};

const test = () => {
  var myHeaders = new Headers();

  myHeaders.append("Content-Type", "text/plain");
  myHeaders.append("Connection", "keep-alive");

  var requestOptions = {
    method: "GET",
  };

  fetch("http://localhost:3001/api/session", requestOptions)
    .then((response) => response.text())
    .then((result) => console.log(result))
    .catch((error) => console.log("error", error));
};

Помогите пожалуйста !!! Заранее спасибо!

...