Невозможно установить cook ie из браузера на запрос входа в express - PullRequest
0 голосов
/ 24 марта 2020

Я создаю аутентификацию, используя стек MERN, и хочу аутентифицироваться, используя httpOnly cook ie. Там, где я настраиваю подписанный серверный повар ie для правильной проверки.

Ожидание- Когда проверка прошла успешно, я хочу установить подписанный httpOnly cook ie и хотите получить к нему доступ, используя req.signedCookies далее для проверки.

Проблема- Пока проверка прошла успешно, и я запускаю res.cookie(...) req.signedCookies все еще undefined

Примечание- Когда я делаю запрос на вход в систему с помощью POSTMAN , все работает нормально, и я могу успешно войти в систему req.signedCookies , но с входом в браузер , это undefined

Codebase-

/ backend / routs / user.router. js

userRouter.post("/login", cors.corsWithOptions, (req, res, next) => {
...

if (validPassword) {
  // Issue JWT Token on validation
  const payload = user._id;
  const token = jwt.sign(
    { userId: payload },
    process.env.JWT_SECRET_KEY,
    {
      expiresIn: 90000
    }
  );
  res.statusCode = 200;
  res.setHeader("WWW-Authenticate", "Basic");
  res.cookie("token", token, {
    expires: new Date(Date.now() + 90000),
    httpOnly: true,
    signed: true
  });
  console.log(req.signedCookies); // it's displaying proper token on making login request 
  with POSTMAN, but not when done with browser.
  res.json({
    message: "You're logged in Successfully"
  });
}

...

}

userRouter.get(
  "/validate-cookie",
  cors.corsWithOptions,
  verifyCookie,
  (req, res, next) => {
    res.statusCode = 200;
    res.setHeader("WWW-Authenticate", "Basic");
    res.json({
      userId: req.userId,
      message: "You're successfully verified"
    });
  }
);

/ backend / auth / authenticate. js

...

const verifyCookie = (req, res, next) => {
  const token = req.signedCookies.token || req.body.token;
  if (!token) {
    let err = new Error();
    err.status = 401;
    err.message = `No token provided`;
    next(err);
  } else {
    jwt.verify(token, JWT_SECRET_KEY, (err, data) => {
      if (err) {
        next(err);
      } else {
        req.userId = data.userId;
        next();
      }
    });
  }
};

exports.verifyCookie = verifyCookie;

...

Также при попытке отладки req. SignCookies.token в аутентификации. js с POSTMAN это правильно, но когда запрос сделан в браузере, это undefined

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...