2016-03-15 2 views
2

У меня есть немного сомнений относительно того, как ACL работает в loopback.Loopback acl и ownerid

Я следую образец https://github.com/strongloop/loopback-example-access-control

The Rest Api позволяет создать вызов, чтобы передать OwnerId в качестве параметра, но не делает никаких проверки.

Таким образом, аутентифицированный пользователь может, например, создать проект и установить идентификатор владельца в любое значение. Я считаю, что свойство должно быть разрешено устанавливать только роль администратора.

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

Спасибо!

+0

Вы используете определения ACL из readme? Если это так, POST должен разрешаться только в/api/projects/donate и/api/projects/remove. Если вы публикуете свой проект.json, мы можем проверить определение ACL – amuramoto

ответ

4

У меня так много времени, чтобы это узнать. Хотя кажется, что имеет значение To и hasMany отношения между встроенными persistedModel и UserModel должны быть установлены ownerId автоматически, но это, вероятно, проблема дизайна.

так что для достижения вашей цели вы должны установить OwnerId перед каждым удаленным запросом от токенов доступа Params, как это:

Model.beforeRemote('create', function(context, model, next) { 
    var req = context.req; 
    req.body.ownerId = req.accessToken.userId; 
    next(); 
}); 

, а затем скрываетесь OwnerId свойства от вашего API.

EDIT:


Если вы хотите установить OwnerId автоматически, см this link для более подробной информации.

Смежные вопросы