环回扩展访问令牌模型会导致问题

时间:2016-08-21 03:39:25

标签: javascript node.js express loopbackjs

我们的用例要求我们为用户(提供者和消费者)提供两种不同的模型。因此,我们将用户模型扩展到消费者和提供者模型,但是当提供者的AccessToken也开始为消费者工作时很快就遇到了麻烦。

EG。让我们假设提供者A的userId为1,而消费者A的userId为1,如果提供者A登录并接收AccessToken,则他还可以通过用他的accessToken查询消费者模型来提取有关消费者A的信息。这可能会造成灾难。 ctx.req.accessToken.userId在消费者模型中为消费者和提供者令牌返回1。

我们尝试将AccessToken模型扩展为AccessTokenProvider和AccessTokenConsumer。以下是AccessTokenConsumer的模型关系

"relations": {
 "user": {
 "type": "belongsTo",
 "model": "consumer",
 "foreignKey": "userId"   }   }

和消费者模型

"relations": {
    "accessTokens": {
      "type": "hasMany",
      "model": "AccessTokenConsumer",
      "foreignKey": "userId",
      "options": {
        "disableInclude": true
      }
    }   }

但是,现在ctx.req.accessToken返回null,logout rest函数给出错误“找不到accessToken”

1 个答案:

答案 0 :(得分:0)

我在这里尝试了IvanZh的答案Multiple User child Models problem

在node_modules / loopback / common / models / user.js中,在model: userModel.modelName方法ttl:ttl之后添加User.prototype.createAccessToken。然后将model属性添加到access_token.json。您可能必须将表重新迁移到数据库。

您的模型名称现在将附加到ctx.req.accessToken.model,您可以使用条件来确保仅调用正确的模型类型。

请注意:如果您更新Loopback,这将被覆盖。坦率地说,这个功能应该被内置到Loopback中,因为它的缺席并没有增加强大框架的魅力,这个框架已经因文档中的缺陷而受到损害。