Вы можете попробовать использовать промежуточное ПО для извлечения токена из заголовка авторизации и получения оттуда userId, промежуточное ПО может выглядеть примерно так:
const decodeToken = (token) => {
return jwt.verify(token, 'secretKey', (err, decoded) => {
if (err) {
return undefined;
}
return decoded;
});
};
const authorize = (req, res, next) => {
if (!req.headers.authorization) {
return res.status(401).send({message: 'UNAUTHORIZED'});
}
const token = req.headers.authorization.split(' ')[1];
if (!token) {
return res.status(401).send({message: 'UNAUTHORIZED'});
}
const decodedToken = decodeToken(token);
if (!decodedToken) {
return res.status(401).send({message: 'UNAUTHORIZED'});
}
req.userId = decodedToken.subject;
next();
};
module.exports = authorize;
Надеюсь, это поможет вам, если нет, я надеюсь, что вы найдете свой ответ:)
РЕДАКТИРОВАТЬ
Чтобы использовать промежуточное ПО, вам нужно только добавить его в свой маршрут, я оставлю вам пример с get запрос:
const authorize = require('../middleware/authorize');
router.get('/someroute', authorize, (req, res) => {
// authorize will verify the token and attach the userId to your request
// so to use it you'll only need to call req.userId
// something like this
console.log('current logged user id', req.userId);
// YOUR CODE HERE
});