2017-08-17 2 views
1

J'ai intégré passport-jwt à des fins d'authentification. Il fonctionne comme le charme mais chaque fois que le mec du Frontend l'utilise à partir de l'interface angulaire 2, il donne le 401 non autorisé. J'ai essayé beaucoup, mais ne pas avoir la moindre idée, ce doit être une erreur idiote cependant.Problème de passeport-jwt: le jeton JWT fonctionne avec un facteur mais ne fonctionne pas avec l'interface utilisateur. Api call

mon dossier de stratégie de passeport est aussi

let JwtStrategy = require('passport-jwt').Strategy, 
    ExtractJwt = require('passport-jwt').ExtractJwt; 
//let fromHeader = require('passport-jwt').fromHeader 


// load up the user model 
const User = require('../components/user/model'); 
const database = require('./database'); // get db config file 
const config = require('./config'); // get db config file 

module.exports = function(passport) { 
//var passportStrategy = function(passport){ 
    let opts = {}; 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); 
    //opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("JWT"); 

    console.log("opts.jwtFromRequest==",opts.jwtFromRequest); 

    opts.secretOrKey = config.secret;//config.secret; 
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) { 
    //console.log("opt==",JSON.stringify(opt)); 
    //console.log("jwt_payload===",jwt_payload); 
    User.findOne({_id: jwt_payload._doc._id}, function(err, user) { 

      if (err) { 
       return done(err, false); 
      } 
      if (user) { 
       done(null, user); 
      } else { 
       done(null, false); 
      } 
     }); 
    })); 
}; 

ma route est aussi

app.get("/api/user/getAll", 
    passport.authenticate('jwt',{session:false}), 
    userController.fetchUsers 
); 

Et append d'en-tête de frontend est la suivante:

logoutUser(token) { 

//const userData = JSON.stringify(userInfo); 

var headers = new Headers(); 


headers.append('Content-Type', 'application/json'); 

headers.append('Authorization', token); //e.g.token = JWT dasddddasdsda 

//headers.append('Authentication', token); 

console.log(headers) 



return this.http.post('http://localhost:9000/api/user/logout', { headers: headers }) 

.map((response: Response) =〉 { 

return response.json() 

}) 

.catch(this.errorHandler); 

} 

Ce serait vraiment génial si quelqu'un peut m'aider à identifier l'erreur.

Répondre

2

Le deuxième argument pour la méthode post est la charge utile.

donc ce code ci-dessous

this.http.post('http://localhost:9000/api/user/logout', { headers: headers }) doit être

this.http.post('http://localhost:9000/api/user/logout', {}, { headers: headers }) 
+0

Merci @srisaiswaroop Son travail parfait. :) –