我发现这个奇怪的错误使用Password-Jwt进行身份验证,我对此有点新意,所以任何帮助都会非常感激。 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.fromAuthHeaderAsBearerToken();
opts.secretOrKey = config.secret;
passport.user(new jwtStrategy, opts, function(jwt_payload,
done){
User.getUserById(jwt_payload._id, function(err, user){
if(err){
return done(err, false);
}
if(user){
return done(null, user);
}else{
return done(null, false);
}
});
});
}
我收到了这个错误:
this._secretOrKeyProvider = options.secretOrKeyProvider; ^
TypeError:无法读取未定义的属性'secretOrKeyProvider' 在新的JwtStrategy(/home/mostfaubuntu/Desktop/desktop/MEAN_APP_PROJECT/node_modules/passport-jwt/lib/strategy.js:33:41) 在module.exports(/home/mostfaubuntu/Desktop/desktop/MEAN_APP_PROJECT/config/passport.js:10:19) 在对象。 (/home/mostfaubuntu/Desktop/desktop/MEAN_APP_PROJECT/app.js:34:29) 在Module._compile(module.js:652:30) 在Object.Module._extensions..js(module.js:663:10) 在Module.load(module.js:565:32) 在tryModuleLoad(module.js:505:12) 在Function.Module._load(module.js:497:3) 在Function.Module.runMain(module.js:693:10) 在启动时(bootstrap_node.js:188:16)
答案 0 :(得分:0)
所以你必须使用new JwtStrategy(opts, callbackFunction)
查看文档中的示例用法。
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
User.findOne({id: jwt_payload.sub}, function(err, user) {
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
return done(null, false);
// or you could create a new account
}
});
}));