Node.js Passport身份验证函数在节点api中不起作用

Node.js Passport身份验证函数在节点api中不起作用,node.js,api,express,jwt,Node.js,Api,Express,Jwt,我在登录时使用jwt simple节点模块创建令牌。 下面是我的代码: 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){ v

我在登录时使用jwt simple节点模块创建令牌。 下面是我的代码:

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")
      }
    })
  })
});
令牌正在成功创建。 现在,我正在尝试对
/dashboard
路由中的用户进行身份验证

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
,当我从路由中删除passport身份验证功能
passport.authenticate('jwt',{session:false})
时,它的打印
成功:false,消息:'No Token Found'
。 我不知道如何解决这个问题。请看一下我的代码,让我知道哪里是我的错

谢谢你的帮助。
根据我的理解,谢谢。在使用passport.Authenticate()函数之前,需要定义一个策略。检查。我认为你可以用jwt代替简单的jwt。希望有帮助。

如果使用passport.authenticate('jwt',{session:false}),目的是什么?以及在调试或记录令牌时它在令牌中给出的内容。
passport.authenticate('jwt',{session:false})
用于检查令牌是否有效。但当我在途中使用它时,它会发出
未经授权的
。这意味着
令牌
无效或者什么???我不明白,我在学习教程。即使他也在使用
jwtsimple
,它也能正常工作。那么您是否按照教程创建了jwt策略?检查教程中的“创建我们的策略和用户”部分。您确定您通过parted[1]变量中的getToken函数的头接收令牌吗?可能不是。如何检查?只需打印标题。授权并告诉我您得到了什么