J'utilise JWT pour authentifier les requêtes de l'API principale et cela provoque une erreur inattendue.Aucun jeton d'autorisation n'a été trouvé dans l'autorisation de noeud
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!
}; J'utilise le code ci-dessus pour générer le jwt et il génère avec succès.
var jwt = require('express-jwt');
var auth = jwt({
secret: 'MY_SECRET',
userProperty: 'payload'
});
var router = express.Router();
router.get('/list',auth, controller.getMerchantList);
après un utilisateur est connecté Je reviens le jeton JWT et j'envoyer le jeton lorsque le client effectue des appels à l'arrière-plan.
$http.get('/api/merchant/list',{
headers: {
Authorization: 'Bearer '+ authentication.getToken()
}
});
Le jeton généré: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjEsImVtYWlsIjoia2FzaGlmcm9zaGVuN0BnbWFpbC5jb20iLCJuYW1lIjoiQXJ5YSBTdGFyayIsImV4cCI6MTQ5OTg0NjEzOSwiaWF0IjoxNDk5MjQxMzM5fQ.-CCQwiadozSOuuIk9fil4aJh8D38NwgKYP3HpvClyKw
Mais je reçois toujours un 401. Le jeton JWT est là dans le front-end. J'ai vérifié via un fichier console.log. Quelqu'un peut-il m'aider s'il vous plaît à résoudre ce problème.
pouvez-vous pls. montrez-nous le jeton généré (SVP éditez votre question et ajoutez-la au lieu de répondre avec un commentaire) – jps
J'ai ajouté le jeton :) merci d'avance :) –
Je ne suis pas familier avec express-jwt, mais récemment il y avait un un cas similaire à la vôtre (jeton présent mais toujours 401) et il s'est avéré être un problème avec la réclamation aud (public). (-> https://stackoverflow.com/questions/44398177/message-authorization-has-been-denied-for-this-request-owin-middleware/44409993#44409993) Votre jeton n'a pas la réclamation aud. Peut-être que c'est le problème. voir aussi https://tools.ietf.org/html/rfc7519#section-4.1.3 – jps