环回允许所有用户访问只有所有者应该看到的内容

时间:2018-03-17 15:46:28

标签: javascript acl loopbackjs loopback

在我的环回应用中,我有两个模型:userthing

基本上thing属于user,只有所有者才能访问thing。这就是我的thing.json文件的样子:

{
  "name": "thing",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "user": {
      "type": "belongsTo",
      "model": "user",
      "foreignKey": "userId",
      "primaryKey": "id"
    }
  },
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW"
    },
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$unauthenticated",
      "permission": "DENY"
    }
  ],
  "methods": {}
}

正在发生的事情是,如果我在允许某些角色之前拒绝像我现在所做的每个人,则不允许任何人访问或创建内容,但如果我删除该行,则所有用户都可以访问所有内容。我错过了什么?我希望所有者能够访问他们自己的东西。

谢谢!

1 个答案:

答案 0 :(得分:2)

来自Loopback documentation

  

要限定$ owner,目标模型需要与User模型(或扩展User的模型)以及与目标模型实例的外键匹配的属性具有belongsTo关系。 $ owner的检查仅针对路径上具有':id'的远程方法执行,例如,GET / api / users /:id。