2016-12-06 5 views
0
root: { 
    dir: { 
    subDir: { 
     subSubDir: { 
     ... 
     }, 
     ... 
    }, 
    subDir_2: { 
     ... 
    } 
    }, 
    dir_2: { 
    ... 
    }, 
    ... 
} 

ユーザがsubDirとそのすべての内容にアクセスを制限したいとします。別のユーザーがsubSubDirにアクセスしようとしました。私はこのすべてをカスタムロジックで行うべきだと思います:私は制限されたノードに新しいプロパティを追加します。access: 'noOne'のようなものです。MongoDBのネストされたアクセス権

したがって、anotherUserのクエリロジックはどのようになりますか? 「各親ノードのaccessプロパティの存在を確認する」のようなものですか?特に10以上のレベルのネスティングがある場合は、それは良く見えません。それぞれの子にaccessプロパティを追加すると、さらに数十万個以上のノードがそこに存在する可能性があるため、さらに悪化します。

MongoDBでこれを実装する正しい方法は何ですか?ボックスのうち

答えて

0

A MongoDBの溶液。あなたは、ドキュメントに保存されているフィールドに基づいてデータを制限することができる$redactを使用することであろう。したがって、異なるドキュメントレベルのアクセスフィールドを比較することによってアクセスを制御できます。

すべてのアクセスレベルを含むようにユーザーをモデル化することも、アクセスレベルとドキュメントレベルのペアにすることもできます。

ユーザーが特定のドキュメントを要求すると、ドキュメントのレベルとそのドキュメントレベルのユーザーアクセスを比較できます。

関連する問題