使用未经授权的Node.js进行Passport-JWT身份验证

时间:2018-06-28 13:46:53

标签: node.js jwt passport.js passport-jwt

我是nodejs的新手。我需要使用nodejs创建和认证。在这里,我找不到几个答案,但他们也使用了旧版本。在这里我正在使用这些版本 enter image description here

我使用此代码在节点应用程序中创建了password.js文件。

const JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;
const config = require('./db');
const User = require('./models/user');


const opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = config.secret;

module.exports = (passport)=>{
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
        User.findUserbyId({_id: jwt_payload._doc._id}, function(err, user) {
            if (err) {
                return done(err, false);
            }
            if (user) {
                return done(null, user);
            } else {
                return done(null, false);
            }
        });
    }));
};

然后我使用此路由方法来创建带有身份验证的路由。

router.post('/profile', 
    passport.authenticate('jwt'),{ session: false },
     (req, res)=> {
    res.json({user:req.user});
 });

我使用邮递员创建令牌并检查身份验证。 enter image description here

我不明白为什么会出错。 findUserById方法被遵循

module.exports.findUserbyId = (id, callback)=>{
  User.findOne(id, callback);
}

我的代码有什么问题?为什么每次都能给出

  

未经授权

在我的邮递员申请中。

0 个答案:

没有答案