nodejs按用户类型授权(角色),允许基于用户类型

时间:2017-07-07 13:23:22

标签: node.js authentication authorization

您好我是nodejs的新手,我想知道如何在nodejs中处理基于角色的用户帐户。

在我的应用程序中,它有两种类型的用户

  1. 供应商
  2. 客户
  3. 目前我正在使用护照和护照-jwt对用户进行身份验证,并且它运行良好。

    所以现在我想根据用户类型授权API路由,例如可能有一些路由只允许供应商访问。

    任何人都可以帮助我吗?按用户类型授权路线的最佳方法是什么?或者有没有办法按用户类型验证用户令牌?

    这是我的代码,

    router.post('/signup', function(req, res) {
      if (!req.body.username || !req.body.password) {
        res.json({success: false, msg: 'Please pass username and password.'});
      } else {
        var newUser = new User({
          username: req.body.username,
          password: req.body.password
        });
        // save the user
        newUser.save(function(err) {
          if (err) {
            return res.json({success: false, msg: 'Username already exists.'});
          }
          res.json({success: true, msg: 'Successful created new user.'});
        });
      }
    });
    
    router.post('/signin', function(req, res) {
      User.findOne({
        username: req.body.username
      }, function(err, user) {
        if (err) throw err;
    
        if (!user) {
          res.send({success: false, msg: 'Authentication failed. User not found.'});
        } else {
          // check if password matches
          user.comparePassword(req.body.password, function (err, isMatch) {
            if (isMatch && !err) {
              // if user is found and password is right create a token
              var token = jwt.sign(user, config.secret);
              // return the information including token as JSON
              res.json({success: true, token: 'JWT ' + token});
            } else {
              res.send({success: false, msg: 'Authentication failed. Wrong password.'});
            }
          });
        }
      });
    });
    
    router.get('/book', passport.authenticate('jwt', { session: false}), function(req, res) {
    
          res.json("This is it, authorized");
    
    });
    

    由于

0 个答案:

没有答案