2016-08-28 6 views
1

私は各顧客が独自のサービスを持つことができるループバックアプリケーションを持っています。したがって、私は顧客が自分のサービスだけを見て、追加し、編集し、削除することができるようにする必要があります。しかし、私が何をしていても、顧客はすべてのユーザーからすべてのサービスを見ることも、誰も誰のサービスも見ることができないように見えることがあります。

サービスモデル

"relations": { 
    "customer": { 
    "type": "belongsTo", 
    "model": "customer", 
    "foreignKey": "customerId" 
    } 
} 

そして、私はそれを見てきたようにALC:

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

しかし、それは、このサービスの所有者のみ/ GET/{ID}それのサービスのようなものだ場合にしかし、それは/すべてのサービスを得ることができませんか?

私が使用している場合は、この:

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

私は私が必要なものを持っているが、これは各顧客が他のすべての顧客からのすべてのサービスを取得することができますので、市長のセキュリティリークです。あなたのserviceモデルと$owner ACL内のプロパティcustomerIdを追加する必要が

答えて

1

:idセグメントは、APIのURLに存在する場合にのみ機能します。

あなたのURLに:idがない場合は、カスタムロールリゾルバを作成できます。

+0

私は/ {id}(/:id)のGETで覆われていると書いています。しかし、私がidを使って単一のサービスを望んでいないのはどうでしょうか?その$ ownerのサービスはどれですか? – Arcagully

+0

@Arcagully私が私の答えで述べたように、あなたは 'customerId'プロパティが必要です。また、idセグメントを無視してすべてのサービスをカバーしたい場合は、カスタムロールリゾルバを作成する方法です –

関連する問題