2016-08-08 54 views
3

Ich benutze Pass-JWT-Paket für die einfache Authentifizierung und das Token wird von jsonwebtoken generiert. Aber das Problem ist, dass überprüfen Callback nie aufgerufen wird.Pass JWT überprüfen Rückruf nicht genannt

Hier mein Pass.js Code.

var JwtStrategy = require('passport-jwt').Strategy; 
var User = require('../app/models/user'); 
var config = require('../config/database'); 
var opts = {}; 
opts.jwtFromRequest = function(req) { 
    var token = null; 
    if (req && req.headers) { 
     token = req.headers.authorization; 
    } 
    return token; 
}; 
opts.secretOrKey = config.secret; 
console.log(opts); 
module.exports = function(passport) { 
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) { 
     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); 
      } 
     }); 

    })); 
}; 

Ich hoffe, von Ihnen zu hören.

Dank

+0

Fräser Config ist nur regelmäßig wie Proben: \t router.route ('/ timeRecords') \t .post (passport.authenticate ('jwt', {Sitzung: false}), timeRecordController.postTimeRecords) \t .get (pass.authenticate ('jwt', {Sitzung: false}), timeRecordController.getTimeRecords); – Softalent

Antwort

2

Das Problem ist, dass man ‚JWT‘ (JWT und einen Raum vor dem ursprünglichen jwt unterzeichnet) hinzufügen sollte. Bitte überprüfen Sie dieses Tutorial von Joshua für die Unterstützung. Übrigens, stellen Sie sicher, dass wenn Sie ein 'wo' in Ihrem findOne oder nicht brauchen.

+0

Danke. Du hast mich gerettet. Tatsächlich steckte ich mehrere Tage darin fest. Du hast mein Problem gelöst. Danke noch einmal. – Softalent

+0

Die Verwendung wird hier veranschaulicht: https://www.npmjs.com/package/passport-jwt#include-the-jwt-in-requests – Troy