Промежуточное ПО для проверки токена во время авторизации - PullRequest
1 голос
/ 28 апреля 2020

Я делаю авторизацию с JWT, и это мое промежуточное ПО, чтобы проверить, был ли запрос отправлен авторизованным пользователем или нет

const jwt = require('jsonwebtoken');
const {secret} = require('../config/app').jwt;

module.exports = (req, res, next) => {
    const authHeader = req.get('Token');
    if(!authHeader) {
        return res.status(401).end('Token not provided!')
    }

    const token = authHeader.replace('Bearer ', '');
    try{
        jwt.verify(token, secret);
        if(payload.type !== 'access'){
            return res.status(401).ens('Invalid token type')
        }
    }
    catch(err){
        if(err instanceof jwt.TokenTokenExpired){
            return res.status(401).end('Token expired')
        }
        if(err instanceof jwt.JsonWebTokenError){
            return res.status(401).end('Invalid token');
        }
    }
    next();
}

Здесь токен проверяется jwt.berify, но мне интересно, что, если кто-то будет пытаться получить доступ с помощью действительного, но чужого (например, администратора) токена? Должен ли я не только проверять токен на действительность, но и проверять, является ли это токен, который ссылается на ЭТОГО пользователя, а не на кого-то еще? И если я должен, каков наилучший способ сделать это? Хранить user_id в токене и сопоставлять его с отправленным в запросе? Или иначе?

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