2016-03-15 62 views
2

我對ACL如何在環回上工作有點懷疑。Loopback acl和ownerid

我下面的示例https://github.com/strongloop/loopback-example-access-control

的REST API允許創建調用以傳遞OWNERID作爲參數,但不作任何驗證。

因此,經過身份驗證的用戶可以創建項目並將ownerid設置爲任何值。我相信該屬性應該只允許由管理員角色設置。

我知道我可以把一些代碼做驗證..但我相信值必須基於當前登錄的用戶自動設置。我錯了或我錯過了什麼?

謝謝!

+0

您是否使用自述文件中的ACL定義?如果是這樣,POST只應該被允許在/ api/projects/donate和/ api/projects/withdraw上。如果你發佈你的project.json,我們可以驗證ACL定義 – amuramoto

回答

4

我花了這麼多時間來找出這個。雖然它似乎屬於並且內置persistedModel和UserModel之間的許多關係必須自動設置ownerId,但它可能是一個設計問題。

所以對於實現你的目標,你必須設置OWNERID從訪問令牌PARAMS這樣每個遠程請求之前:

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

,然後躲在從您的API的OWNERID財產。

編輯:


如果你想自動設置OWNERID,看到this link瞭解更多詳情。