Я использую JWT для аутентификации запросов к внутреннему API, и это приводит к неожиданной ошибке.
const generateJwt = function(rows) {
var expiry = new Date();
expiry.setDate(expiry.getDate() + 7);
return jwt.sign({
_id: 1,
email: rows.email,
name: rows.username,
exp: parseInt(expiry.getTime() / 1000),
}, "MY_SECRET"); // DO NOT KEEP YOUR SECRET IN THE CODE!
};
Я использую приведенный выше код для создания jwt, и он успешно сгенерирован.
var jwt = require('express-jwt');
var auth = jwt({
secret: 'MY_SECRET',
userProperty: 'payload'
});
var router = express.Router();
router.get('/list',auth, controller.getMerchantList);
после того, как пользователь вошел в систему, я возвращаю токен jwt и отправляю токен, когда клиент звонит в серверную часть.
$http.get('/api/merchant/list',{
headers: {
Authorization: 'Bearer '+ authentication.getToken()
}
});
Генерируется маркер: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjEsImVtYWlsIjoia2FzaGlmcm9zaGVuN0BnbWFpbC5jb20iLCJuYW1lIjoiQXJ5YSBTdGFyayIsImV4cCI6MTQ5OTg0NjEzOSwiaWF0IjoxNDk5MjQxMzM5fQ.-CCQwiadozSOuuIk9fil4aJh8D38NwgKYP3HpvClyKw
Но я все еще получаю 401. Токен jwt находится во внешнем интерфейсе. Я проверил через console.log. Может кто-нибудь, пожалуйста, помогите мне решить эту проблему.