【发布时间】:2016-12-16 11:25:36
【问题描述】:
我在 express 项目中使用 Passport-jwt 策略进行身份验证,
这里是 mt passport-jwt 配置在这个目录:/config/passport.js
var JwtStrategy = require('passport-jwt')
.Strategy,
ExtractJwt = require('passport-jwt')
.ExtractJwt;
var User = require(__dirname + '/../models/user');
var config = require(__dirname+ '/database');
module.exports = function(passport) {
console.log("here: passport-jwt");
var opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
opts.secretOrKey = config.secret;
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
User.findOne({
id: jwt_payload.id
}, function(err, user) {
if (err) {
return done(err, false);
}
if (user) {
done(null, user);
} else {
done(null, false);
}
});
}));
};
在 /routes/account.js 目录中的帐户路由中,我这样称呼它:
var passport = require('passport');
require(__dirname + '/../config/passport')(passport);
router.post('/', passport.authenticate('jwt', {
session: false
}), function(req, res) { ... }
但问题是用于身份验证的护照功能不执行。并且“这里:passport-jwt”没有显示。
问题出在哪里?
【问题讨论】:
标签: node.js express jwt passport.js