2017-07-05 4 views
0

Ich kann Benutzer nicht autorisieren, ich versuche, Protokoll jwt_payload zu trösten, aber ich kann Ergebnisse nicht sehen. Ich habe versucht, log jwt_payload zu trösten, aber ich kann keine Protokolle sehen.Pass-JWT Token kann nicht autorisiert

passport.js

`const JwtStrategy = require('passport-jwt').Strategy; 
const ExtractJwt = require('passport-jwt').ExtractJwt; 
const User = require('../models/user'); 
const config = require('../config/database'); 

module.exports = function(passport){ 
    let opts = {}; 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); 
    opts.secretOrKey = config.secret; 
    passport.use(new JwtStrategy(opts,(jwt_payload, done) => { 
     console.log(jwt_payload); 
     User.getUserById(jwt_payload.sub,(err,user)=> { 
      if(err){ 
       return done(err,false); 
      } 
      if(user){ 
       return done(null,user); 
      }else { 
       return done(null,false) 
      } 

     }); 
    })); 
}` 

//user.js

router.get('/profile',passport.authenticate('jwt',{session:false}), (req , res , next) => { 
    res.json({user:req.user}); 
}) 

Thanks in advance. 

Antwort

1

eine Anfrage an geschützter Route in Ihrem Fall Profil Ausgabe sehen jwt_payload Stellen. Wenn Sie andere Dinge korrekt konfiguriert sollte es so etwas wie dieses { '$__': { strictMode: true, selected: {}, getters: {}, _id: '59761655e1d793141048e7fc', wasPopulated: false, activePaths: { paths: [Object], states: [Object], stateNames: [Object] }, pathsToScopes: {}, emitter: { domain: null, _events: {}, _eventsCount: 0, _maxListeners: 0 } }, isNew: false, _doc: { __v: 0, password: '$2a$10$Ek/lrNKHQcRSuQX1H5c2VONOp5InudCI7KeAHkCw96EDkBcY9FEau', username: 'uzzol', _id: '59761655e1d793141048e7fc' }, '$init': true, iat: 1500966142 }

Konsole anmelden kann ich nicht Ihre getUserById Methode sehen, aber ich bin mir ziemlich sicher, dass Sie eine Fehlermeldung erhalten, weil jwt_payload.sub hier nicht definiert werden soll (fragen Sie mich nicht Warum). Sie können User.findOne({id:jwt_payload.sub},callback) verwenden, um einen Benutzer zu finden. Aber wenn Sie einen Benutzer von Mungo findById Methode bekommen wollen dann sehen Sie, was Sie von jwt_payload erhalten. Jetzt sehen Sie den Benutzer _id nicht unter jwt_payload.sub, sondern unter jwt_payload._doc._id. so sollten Sie Ihren Code so etwas wie diese User.findById({_id:jwt_payload._doc._id},callback);

bitte meine git-Repository für eine funktionierende Version überprüfen: https://github.com/uzzol101/auth_app/tree/master

+1

Danke, ich habe es schon lösen, ich habe keinen Platz in der Lage auf 'Token hinzuzufügen: ' JWT '+ Token' – vikvincer

+1

versuche dieses Token:' JWT '+ Token'. bemerken Sie einen zusätzlichen Platz nach JWT. –