如何设置ACL以允许每个人列出REST API中的所有用户

jpc*_*ila 11 javascript strongloop loopbackjs

我试图使用REST API列出我的loopback 2.0应用程序中的所有用户,我收到以下错误:

{
  "error": {
    "name": "Error",
    "status": 401,
    "message": "Authorization Required",
    "statusCode": 401,
    "stack": "...."
  }
}
Run Code Online (Sandbox Code Playgroud)

我手动将ACL添加到model-config.json文件中:

"User": {
    "dataSource": "db",
    "acls": [
        {
            "principalType": "ROLE",
            "principalId": "$everyone",
            "permission": "ALLOW",
            "accessType": "*"
        }
    ]
},
Run Code Online (Sandbox Code Playgroud)

由于失败,我创建了一个基于User内置模型的模型:

{
    "name": "Admin",
    "base": "User",
    "properties": {},
    "validations": [],
    "relations": {},
    "acls": [
        {
            "principalType": "ROLE",
            "principalId": "$everyone",
            "permission": "ALLOW",
            "accessType": "*"
        }
    ],
    "methods": []
}
Run Code Online (Sandbox Code Playgroud)

但是在REST API中我仍然遇到同样的问题:

{
  "error": {
    "name": "Error",
    "status": 401,
    "message": "Authorization Required",
    "statusCode": 401,
    "stack": "....."
  }
}
Run Code Online (Sandbox Code Playgroud)

我感谢任何帮助.=)

小智 5

  1. 我们应该允许您使用其他ACL进一步配置内置模型.这是LoopBack的待办事项.

  2. 您可以在common/user.json中对内置User模型进行子类化,如图所示.

    {"name":"user","base":"User","plural":"users"}

然后,您需要通过向server/model-config.json添加条目将其公开给REST,例如:

"user": {
    "dataSource": "db",
    "public": true
  },
Run Code Online (Sandbox Code Playgroud)

  • 如果文档反映了这一点,那将是很好的,而且我差不多一年之后就会进入并且遇到同样的问题而没有被关于它的文档警告. (4认同)
  • 感谢您指出我们无法扩展内置模型的ACL.我的common/admin.json最终是这样的:{"name":"Admin","base":"User","plural":"Admins","properties":{},"validations":[], "relations":{},"acls":[{"principalType":"ROLE","principalId":"$ everyone","permission":"ALLOW","accessType":"READ"}],"方法":[]} (2认同)