【问题标题】:How do i check if user is admin using jwt on sailsjs我如何在sailsjs上使用jwt检查用户是否是管理员
【发布时间】:2018-08-10 04:59:00
【问题描述】:

我在服务器端使用sailsjs 框架,在前端使用angularjs 来构建SPA 并使用jsonwebtoken 进行令牌身份验证。我的用户 api 有信息:name:string,email:email,admin:Boolean,这些是我用来生成令牌并发送到前端保存在 localstorage 中的信息。 我的问题是:如果用户在我的服务器端是管理员,我该如何验证(检查令牌是否有效并且一切正常)?

提前谢谢你。

根据我目前的政策来检查服务器端的令牌

module.exports = function(req, res, next) {
  var token;

  if (req.headers && req.headers.authorization) {
    var parts = req.headers.authorization.split(' ');
    if (parts.length == 2) {
      var scheme = parts[0],
        credentials = parts[1];

      if (/^Bearer$/i.test(scheme)) {
        token = credentials;
      }
    } else {
      return res.json(401, {
        err: 'Format is Authorization: Bearer [token]'
      });
    }
  } else if (req.param('token')) {
    token = req.param('token');
    // We delete the token from param to not mess with blueprints
    delete req.query.token;
  } else {
    return res.json(401, {
      err: 'No Authorization header was found'
    });
  }

  sailsTokenAuth.verifyToken(token, function(err, token) {
    if (err) {
      console.log('ERR estou em tokenauth policies');
      return res.json(401, {
        err: 'The token is not valid'
      });

    }

    req.token = token;

    next();

  });
};

【问题讨论】:

    标签: angularjs express sails.js jwt


    【解决方案1】:

    执行 3 项政策:

    • SetJwt:`req.

      sailsTokenAuth.verifyToken(token, function(err, token) {
         if (err) {
            console.log('ERR estou em tokenauth policies');
            return res.json(401, {
               err: 'The token is not valid'
            });
         } else req.token = token
      }
      
    • 是管理员

      if (req.auth === ADMIN_LEVEL) next()
      else res.forbidden()
      
    • 是用户

      if (req.auth === USER_LEVEL) next()
      else res.forbidden()
      

    您的政策:

     someControllerMethod: [setJwt, isAdmin]
    

    当然,您需要在数据库中添加一个int 甚至是一个标志isadmin 才能使其工作。并且令牌需要保存这些信息!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-02
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 2011-10-02
      相关资源
      最近更新 更多