Я пытаюсь найти решение, в котором я могу проверить промежуточное ПО на маршруте, который проверяет JWT. Поскольку эта проверка декодирует ее, а также проверяет, я хотел бы передать декодированные данные по маршруту без необходимости повторного декодирования. Смотрите мое текущее решение ниже:
//route.js
app.get("/donations", helpers.protected, (req, res) => {
console.log(req.user)
});
//helper.js
module.exports.protected = (req, res, next) => {
const jwt_token = req.cookies["auth"];
jwt.verify(jwt_token, nconf.get("jwt:secret"), (err, decoded) => {
if (err || !decoded) {
logErr(error.INVALID_JWT, err, req);
return res.redirect("/");
} else {
req.user = decoded;
return next();
}
});
};
Цель состоит в том, чтобы сделать код простым и чистым в маршрутах, поместив логику проверки в промежуточную функцию. Я хочу быть в состоянии предотвратить необходимость декодирования дважды, но также быть в безопасности. Могу ли я использовать req.user = decoded; как я показал выше? Можно ли когда-нибудь изменить req.user или поместить его в HTTP-запрос от клиента? Будет использовать res.locals.user = decoded; быть лучше или хуже в использовании?
Спасибо