首页 文章

admin环回中的角色

提问于
浏览
3

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

以下是我采取的步骤:

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

slc loopback:型号?输入型号名称: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 回答

  • 1

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

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

    DEBUG=loopback:security slc run
    

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

相关问题