У меня есть приложение узла 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, как я хочу? Любое предложение?