2016-08-08 2 views
3

간단한 인증을 위해 passport-jwt 패키지를 사용하고 있습니다. 토큰은 jsonwebtoken에 의해 생성됩니다. 하지만 문제는 콜백 확인이 호출되지 않는다는 것입니다.여권 jwt 확인 콜백이 호출되지 않았습니다.

여기 내 passport.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

라우터 구성 샘플처럼 단지 규칙적 passport.authenticate ('jwt', {session : false}), timeRecordController.getTimeRecords); – Softalent

답변

2

문제는 당신이 'JWT'(JWT와 앞서 원래 JWT의 공간 서명)을 추가해야한다는 것입니다. Joshua가이 자습서 을 확인하십시오. 그런데 findOne 내부에 'where'가 필요한지 확인하십시오. (: timeRecordController.postTimeRecords) passport.authenticate ('JWT'거짓 세션 {}) \t 갔지 (\t router.route ('/ timeRecords') \t .post :

+0

감사합니다. 넌 나를 구했다. 사실, 나는 며칠 동안 그것에 갇혔다. 당신은 내 문제를 해결했습니다. 다시 한번 감사드립니다. – Softalent

+0

사용법은 여기에 설명되어 있습니다. https://www.npmjs.com/package/passport-jwt#include-the-jwt-in-requests – Troy

관련 문제