Я создаю аутентификацию, используя стек 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