admin环回中的角色

时间:2015-12-31 04:32:57

标签: mongodb loopbackjs

我在使用mongodb在loopback项目中设置管理员角色时遇到问题。我已经设置了一个简单的模型,添加了acls,创建了一个用户并将用户与admin角色相关联,但是我无法通过API Explorer访问该模型 - 它总是带有"授权必需"

以下是我采取的步骤:

1)我通过slc添加了模型测试:

  

slc loopback:model       ?输入型号名称:test       ?选择要测试的数据源:moti_db(mongodb)       ?选择模型的基类:PersistedModel       ?通过REST API公开测试?是       ?自定义复数形式(用于构建REST URL):       现在让我们添加一些测试属性。

Enter an empty property name when done.
? Property name: name
? Property type: string
? Required? No

2)通过注册页面创建用户:id = 1

3)通过API创建管理员角色:id = 1

4)将Role和RoleMapping更改为public = true所以我可以通过其余的api设置它们

这是测试数据模型:

 {
  "name": "test",
  "base": "PersistedModel",
  "idInjection": true,
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "admin",
      "permission": "ALLOW"
    }
  ],
  "methods": []
}

这里是角色

{
  "id": 1,
  "name": "admin",
  "created": "2015-05-22T19:45:23.887Z",
  "modified": "2015-05-22T19:45:23.887Z"
}

这里是RoleMapping:

  {
  "id": 1,
  "principalType": "USER",
  "principalId": "1",
  "roleId": 1
  }

1 个答案:

答案 0 :(得分:1)

您是否在资源管理器的顶部设置了授权令牌?您需要使用电子邮件和密码调用User.login(),然后将Auth Token设置为返回的auth ID值。然后,此令牌随所有后续调用一起发送(作为authorization:标头值,并允许您进行需要身份验证的调用。

另一个有用的事情是使用ACL调试运行API,你可以

DEBUG=loopback:security slc run

它将显示它如何确定访问权限。也许输出会有所帮助(粘贴在这里)。否则,这只是猜测,因为您的代码看起来很好并且假设您之前已登录并正在使用令牌。