2016-12-12 9 views
1

私はnode.js/mlabにはかなり新しく、私は自分のACLを把握しようとしています。MLabとLoopback ACL - たくさんあります(POST)

私は2つのモデル、曲とアカウントを持っています。

アカウントを作成すると、お気に入りと呼ばれる曲が多いアカウントと曲の間に多くの関係があります。

"relations": { 
    "favorites": { 
    "type": "hasMany", 
    "model": "Song", 
    "foreignKey": "" 
    } 
} 

ACLを設定する方法は、管理者だけが新しい曲を作成することができますが、認証された誰もが自分のお気に入りに曲を追加することができます。

私は(ID = useridと、それはまた、トークンを取る)エンドポイントを持っている:

/Accounts/{id}/favorites 

私は私が手にこのエンドポイントに投稿しようとする時はいつでも問題は、次のとおりですについては

http://0.0.0.0:3000/api/Accounts/584e6ed148d44a6c1e53c1a3/favorites 401 (Unauthorized) 

歌、現在のACLは、次のとおりです。アカウントの場合

"acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "administrator", 
     "permission": "ALLOW" 
    }, 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "DENY" 
    }, 
    { 
     "accessType": "READ", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "ALLOW" 
    }] 

、現在のACLは、次のとおりです。

"acls": [ 
    { 
     "accessType": "EXECUTE", 
     "principalType": "ROLE", 
     "principalId": "$authenticated", 
     "permission": "ALLOW", 
     "property": "POST" 
    } 
    ] 

私はそれをトレースしました:

loopback:security:role isInRole(): $everyone +0ms 
    loopback:security:access-context ---AccessContext--- +2ms 
    loopback:security:access-context principals: +1ms 
    loopback:security:access-context principal: {"type":"USER","id":"584e6ed148d44a6c1e53c1a3"} +0ms 
    loopback:security:access-context modelName Account +1ms 
    loopback:security:access-context modelId 584e6ed148d44a6c1e53c1a3 +0ms 
    loopback:security:access-context property __create__favorites +0ms 
    loopback:security:access-context method __create__favorites +0ms 
    loopback:security:access-context accessType WRITE +0ms 
    loopback:security:access-context accessToken: +0ms 
    loopback:security:access-context id "QD2gi3uUr7g07EN7NhCbeSeyKT4AEZGWUoQQB9V0siFzgBOiPM1WOAkLhvxHCQGq" +0ms 
    loopback:security:access-context ttl 1209600 +0ms 
    loopback:security:access-context getUserId() 584e6ed148d44a6c1e53c1a3 +0ms 
    loopback:security:access-context isAuthenticated() true +0ms 
    loopback:security:role Custom resolver found for role $everyone +0ms 
    loopback:security:acl The following ACLs were searched: +1ms 
    loopback:security:acl ---ACL--- +1ms 
    loopback:security:acl model Account +0ms 
    loopback:security:acl property * +0ms 
    loopback:security:acl principalType ROLE +0ms 
    loopback:security:acl principalId $everyone +0ms 
    loopback:security:acl accessType * +0ms 
    loopback:security:acl permission DENY +0ms 
    loopback:security:acl with score: +0ms 7495 
    loopback:security:acl ---Resolved--- +0ms 
    loopback:security:access-context ---AccessRequest--- +0ms 
    loopback:security:access-context model Account +0ms 
    loopback:security:access-context property __create__favorites +0ms 
    loopback:security:access-context accessType WRITE +0ms 
    loopback:security:access-context permission DENY +1ms 
    loopback:security:access-context isWildcard() false +0ms 
    loopback:security:access-context isAllowed() false +0ms 

ありがとうございました!

答えて

1

ありがとうございました!デフォルトではアクセスを拒否しているため、特定のプロパティへのアクセスを設定する必要がありました。

{ 
     "accessType": "EXECUTE", 
     "principalType": "ROLE", 
     "principalId": "$owner", 
     "permission": "ALLOW", 
     "property": "__create__favorites" 
    }, 
    { 
     "accessType": "EXECUTE", 
     "principalType": "ROLE", 
     "principalId": "$owner", 
     "permission": "ALLOW", 
     "property": "__get__favorites" 
    } 
関連する問題