【问题标题】:loopback bug acl not working?环回错误 acl 不起作用?
【发布时间】:2018-03-11 18:38:37
【问题描述】:

我尝试为模型(命名为公司)实现acl

      "relations": {
       "user": {
       "type": "belongsTo",
       "model": "user",
       "foreignKey": "company_id"
     }
   },
      "acls": [
           {
          "accessType": "*",
          "principalType": "ROLE",
          "principalId": "$everyone",
          "permission": "DENY"
        },
     {
         "accessType": "*",
         "principalType": "ROLE",
         "principalId": "$owner",
          "permission": "ALLOW"
      }
   ],

拒绝所有用户并仅访问该对象的经过身份验证的用户所有者。在这里,我还尝试为在短管理员中拥有所有权限的超级用户添加权限,并且 objec(data) 的所有者可以做 crud 是否有任何建议,请帮助

【问题讨论】:

    标签: loopbackjs strongloop


    【解决方案1】:

    您可以拒绝所有未经身份验证的用户,然后拒绝所有人并只允许所有者,如下所示:

    {
          "accessType": "*",
          "principalType": "ROLE",
          "principalId": "$unauthenticated",
          "permission": "DENY"
    },
    
    {
          "accessType": "*",
          "principalType": "ROLE",
          "principalId": "$everyone",
          "permission": "DENY"
    },   
    
    {
          "accessType": "*",
          "principalType": "ROLE",
          "principalId": "$owner",
          "permission": "ALLOW"
    }
    

    $owner 只需要 CRUD,您可以为您的用户分配所需的属性,如下所示:

        {
                  "accessType": "*",
                  "principalType": "ROLE",
                  "principalId": "$owner",
                  "permission": "ALLOW",
                  "property": [
                     "find",
                     "create",
                     "updateAll",
                     "delete"
              ]
        }
    

    对于超级用户,您应该创建此角色并将其分配给您的一位用户。

    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "superuser",
      "permission": "ALLOW"
    }
    

    如何创建角色?你可以关注文档here

    并确保您拥有此文件/server/boot/autentication.js并启用身份验证:server.enableAuth()

    'use strict';
    
    module.exports = function enableAuthentication(server) {
      // enable authentication
      server.enableAuth();
    };
    

    更多ACL技巧请阅读官方文档here

    【讨论】:

    • @Rocky 你能说清楚吗,什么不工作你有错误吗?请重现您所做的步骤谢谢
    • 如果我删除全部拒绝,即 2 acl 规则,它会引发未经授权,然后它会显示所有数据,即不属于该数据的所有者
    • 您究竟删除了哪些 ACL?
    • { "accessType": "*", "principalType": "ROLE", "principalId": "$unauthenticated", "permission": "DENY" },
    • 您是否将这些属性添加到 $owner ? "property": [ "find", "create", "updateAll", "delete" ]
    猜你喜欢
    • 1970-01-01
    • 2019-04-28
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2016-07-01
    • 2014-10-04
    相关资源
    最近更新 更多