javascript - 环回在 header 中使用标记

标签 javascript token loopback

我在尝试在模型的 RemoteMethods 中恢复我的 token 的用户 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: ''

    }
  );

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

这是一个错误吗?你知道我如何才能做到这一点吗? 我不想使用

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

因为我只想在远程方法中包含 user_id arg,并且因为我必须在大约 20~30 个现有方法中执行此操作

谢谢!

最佳答案

我终于找到了一种更简单的方法: 我在中间件中添加了 token 解码,它工作得很好,具有经典的 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: ''
    }
  );

关于javascript - 环回在 header 中使用标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527763/

相关文章:

java - ANTLR4 TokenStream,getText方法

postgresql - 如何通过 SSL 连接到 Loopback v3 中的 Postgres

javascript - 如何将 css 内容加载为 StyleSheet 对象?

javascript - $cordova FileTransfer 下载非 JPEG 文件失败

azure-active-directory - 如何在没有用户的情况下获得访问权限

Elasticsearch 标准分词器行为和单词边界

rest - Strongloop Loopback REST 查询和/或与两者之间的结合

c - 串口环回/双工测试,用 Bash 还是 C? (过程替换)

javascript - 当表单每行都有不同的名称属性时,PHP 循环数据

javascript - 如何使用 AngularJS 定期轮询远程 json?