jwt Passport.authenticate在Node api中没有路由工作

时间:2016-11-30 05:35:47

标签: node.js authentication token

我在用户登录时创建了一个令牌。我正在使用jwt-simple模块。我正在关注this教程。这是我的登录代码。

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({success: true, token: 'JWT'+ 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);

        req.userId = decode.name;
        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 (head) {
      if (head && head.authorization) { 
        var parted = head.authorization.split(' ');

        if (parted.length === 2) { 
          console.log(parted[1]);
          return parted[1];
        } else {
          return null;
        }
      } else {
        return null;
      }
    }; 

当我在/dashboard中点击postman api时,输出仅为unauthorized。当我删除passport.authenticate('jwt', { session: false}),时,输出为{success:false, msg:'No Token Found'}。 我用Google搜索,但没有找到任何解决方案。 请帮帮我...请帮助我们。 感谢

0 个答案:

没有答案