2016-08-08 27 views
3

私は簡単な認証のためにpassport-jwtパッケージを使用しています。トークンはjsonwebtokenによって生成されています。 しかし、問題は、コールバックが決して呼び出されないことです。パスポートjwt検証コールバックが呼び出されていません

ここで私のパスポート.jsコード。

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); 
      } 
     }); 

    })); 
}; 

あなたからのご希望です。

おかげ

+0

ルータの設定は、サンプルのような普通のである:\t router.route( '/ timeRecords') \t .post(passport.authenticate( 'JWT'、{セッション:偽})、timeRecordController.postTimeRecords) \tに.get( passport.authenticate( 'jwt'、{session:false})、timeRecordController.getTimeRecords); – Softalent

答えて

2

問題は、あなたが「JWT」(JWTと、今後、元のJWTのスペース署名)を追加すべきであるということです。このチュートリアル をJoshuaによって確認してください。 ところで、あなたのfindOneの中に 'どこに'必要があるかどうかを確認してください。

+0

ありがとうございます。あなたは私を救いました。実際には、私は数日間それにこだわっていた。あなたは私の問題を解決しました。再度、感謝します。 – Softalent

+0

使用方法は次のとおりです。https://www.npmjs.com/package/passport-jwt#include-the-jwt-in-requests – Troy

関連する問題