Passport身份validationfunction在节点API中不起作用

我正在使用jwt-simple节点模块在login时创build令牌。 下面是我的代码:

 apiRoutes.put('/login', function(req, res, next){ User.findOne({email:req.body.email}, function(err, user){ bcrypt.compare(req.body.password, user.password, function(err, result){ if(result){ var token=jwt.encode(user,config.secret); return res.json({token:token}); }else{ return res.json("Incorrect Email and Password") } }) }) }); 

令牌正在创build成功。 现在我试图在/dashboard路线中validation用户。

 apiRoutes.get('/dashboard', passport.authenticate('jwt', { session: false}), function(req, res) { var token=getToken(req.headers); if(token){ var decode=jwt.decode(token, config.secret); User.findOne({name:decode.name}, function(err, user){ if(err){res.json(err)} if(!user){ return res.status(403).send({success:false, msg:'Authentication Failed'}) }else{ res.json({success:true, msg:'Welcome in the Area' +user.name+'!'}) } }) }else{ return res.status(403).send({success:false, msg:'No Token Found'}) } }); getToken = function (headers) { if (headers && headers.authorization) { var parted = headers.authorization.split(' '); if (parted.length === 2) { return parted[1]; } else { return null; } } else { return null; } }; 

问题是,当我在postman上点击这个API时,显示Unauthorized ,当我从路由中移除passportauthentication函数passport.authenticate('jwt', { session: false}) ,它的打印success:false, msg:'No Token Found' 。 我不知道如何解决这个问题。 请看看我的代码,让我知道我的错在哪里。

帮助赞赏。 谢谢

按照我的理解。 你需要在使用passport.authenticacte()函数之前定义一个策略。 检查这个链接 。 我想你可以使用passport-jwt模块而不是simple-jwt。 希望能帮助到你。