在nodejs和angular cli中使用Jsonwebtoken获取未授权的方法

时间:2017-11-11 02:42:19

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

我正在使用nodejs和angular-cli构建应用程序 我使用JsonWebToken来验证用户帐户。但它总是返回Unauthorized 401。 这是我的代码:

//认证代码

S=[3,2,1,1]

// GET PROFILE

    router.post('/authenticate', (req, res, next) => {
      const username = req.body.username;
      const password = req.body.password;

      User.getUserByUsername(username, (err, user) => {
        if(err) throw err;
        if(!user){
          return res.json({success: false, msg: 'User not found'});
        }

        User.comparePassword(password, user.password, (err, isMatch) => {
          if(err) throw err;
          if(isMatch){
            const token = jwt.sign(user.toJSON(), config.secret, {
              expiresIn: 604800 // 1 week
            });

            res.json({
              success: true,
              token: 'JWT '+token,
              //token:token,
              user: {
                id: user._id,
                name: user.name,
                username: user.username,
                email: user.email
              }
            });
          } else {
            return res.json({success: false, msg: 'Wrong password'});
          }
        });
      });
    });

//按用户身份获取用户

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

//按用户名

获取用户
    module.exports.getUserById=function(id,callback){
        User.findById(id,callback);
    }

//比较密码

    module.exports.getUserByUsername=function(username,callback){
        const query={username:username}
        User.findOne(query,callback);
    }
你能解释一下为什么吗?

0 个答案:

没有答案