Как эффективно использовать Json Web Token в Node JS - PullRequest
0 голосов
/ 31 октября 2019

У меня есть приложение узла js. Я пытаюсь сделать авторизацию с помощью JWT. Когда мой код такой, как я написал ниже, я пытаюсь войти в систему с пользователем в моей базе данных, но сначала он достигает промежуточного программного обеспечения и выдает «Auth Failed». Но если я удалю промежуточное ПО и войду с пользователем, который находится в моей базе данных, он вернет мне токен. Затем я снова добавляю промежуточное программное обеспечение и использую этот токен для другого пользователя, на этот раз он работает и принимает этот токен также для другого пользователя! Но я не хочу этого. Я хочу, чтобы при входе в систему с пользователем в моей базе данных он возвращал уникальный маркер для пользователя, а затем я должен был получить промежуточное программное обеспечение. Вот мои коды:

Вот мое промежуточное ПО:

const jwt = require('jsonwebtoken');

module.exports = (req, res, next) => {
try {

const token = req.headers.authorization.split(" ")[1];
const decodedToken = jwt.verify(token, 'secret_key');
req.userData = decodedToken;
next();
}catch(error) {
return res.status(401).send({
    message: 'Auth failed'
});
}

А вот мой код для входа (я создаю токен здесь), если пароль верен:

 const token = jwt.sign({
            email:user.email,
            password: user.password

        }, 
        'secret_key',
        {
            expiresIn :"2h"
        }
        )
        return res.status(200).send({ message: 'success', token: token});

И в app.js:

const checkAuth = require('../middleware/checkauth');
router.get('/api/company',checkAuth,companyController.list);

Как я могу сделать эту защиту авторизации, используя JWT, как я хочу? Любое предложение?

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