headers 中的环回使用令牌

loopback use token in headers

我在尝试恢复模型的 remoteMethods 中的令牌用户 ID 时遇到问题。我使用了以下代码:

User.beforeRemote('**', function(ctx, user, next) {
  //...some custom token decoding
  ctx.req.body.user_id = token.user_id;
  console.log('token : ', token);
  next();
});

然后,在我的模型中我使用了:

User.check = function (user_id, cb) {
  // Do stuff..
}; 


 User.remoteMethod(
    'check',
    {
      http: {path: '/check', verb: 'post'},
      returns: {arg: 'rate', type: 'object'},
      accepts: [
        {
          arg: 'user_id',
          type: 'number',
          required: true,
          description: "id of the user to check",
          http: function getUserid(ctx) {
            console.log('User.check http body : ', ctx.req.body);
            return ctx.req.body.user_id;
          }
        }
      ],
      description: ''

    }
  );

问题是我的 arg 函数 'getUserid' 在 'User.beforeRemote' 调用之前被触发。

这是一个错误吗?你知道我该怎么做吗? 我不想使用

arg : {http : {source : 'body'}},

因为我只想在远程方法中使用 user_id arg,而且我必须在大约 20~30 个现有方法中这样做

谢谢!

我终于找到了一种更简单的方法: 我在中间件中添加了我的令牌解码,它工作正常,具有经典的 arg 类型编号,没有 http 功能:

//middleware dir :
module.exports = function (app) {
  "use strict";

  return function (req, res, next) {
    //Custom token decoding code ....
    //used req.body to show example with post requests :
    req.body.user_id = parseInt(token.user_id); 

    console.log('token : ', token);
    next();
  };
};

//remote Method declaration, without need to add a beforeRemote method : 
User.remoteMethod(
    'check',
    {
      http: {path: '/check', verb: 'post'},
      returns: {arg: 'rate', type: 'object'},
      accepts: [
        {
          arg: 'user_id',
          type: 'number',
          required: true,
          description: "id of the user to check"
        }
      ],
      description: ''
    }
  );