2016-09-07 2 views
2

В настоящее время я оцениваю loopback.io для разработки части API нового проекта, и у меня возникают проблемы с настройкой правильных записей ACL.Проблемы с ACL с loopback.io

То, что я хочу выполнить, предоставляется токен auth, конечные точки GET должны возвращать только объекты, принадлежащие пользователю. Например, запрос/Показывает? Access_token = xxxxxx должен возвращать только объекты, принадлежащие пользователю.

Ниже представлен мой файл show.json, а моя модель пользователя называется Podcaster. Любая помощь будет оценена по достоинству.

{ 
    "name": "Show", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "title": { 
     "type": "string", 
     "required": true 
    }, 
    "description": { 
     "type": "string" 
    } 
    }, 
    "validations": [], 
    "relations": { 
    "episodes": { 
     "type": "hasMany", 
     "model": "Episode", 
     "foreignKey": "" 
    }, 
    "podcaster": { 
     "type": "belongsTo", 
     "model": "Podcaster", 
     "foreignKey": "" 
    } 
    }, 
    "acls": [ 
    { 
     "accessType": "WRITE", 
     "principalType": "ROLE", 
     "principalId": "$authenticated", 
     "permission": "ALLOW", 
     "property": "create" 
    }, 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$owner", 
     "permission": "ALLOW" 
    }, 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "DENY" 
    } 
    ], 
    "methods": {} 
} 

ответ

1

Это не связано с ACL.

Вы хотите изменить бизнес-логику метода. Поэтому наилучшей практикой является то, что вы создаете новый метод получения показов, принадлежащих текущему пользователю.

Если вы хотите работать ваш текущий owner аКЛ, вам необходимо создать связь между user и show и установить ownerId в show модели.

{ 
     "name": "Show", 
     "base": "PersistedModel", 
     "idInjection": true, 
     "options": { 
     "validateUpsert": true 
     }, 
     "properties": { 
     "title": { 
      "type": "string", 
      "required": true 
     }, 
     "description": { 
      "type": "string" 
     }, 
     "description": { 
      "type": "string" 
     } 
     "ownerId": { 
      "type": "object" 
     } 

     }, 
     "validations": [], 
     "relations": { 
     "owner": { 
      "type": "belongsTo", 
      "model": "user", 
      "foreignKey": "ownerId" 
     }, 
.... 
Смежные вопросы