私は現在、多くのユーザーが異なるアクセス権を持つリソース用のロールベースの認証システムを設計しています。
役割は、単一のユーザーまたは役割のグループです (つまり、役割は役割のツリーです)。(下の図を参照)
リソースは複数の認証プロパティ (読み取り、書き込み、削除など) を持つことができます。各認証プロパティは、操作へのアクセスを許可されたロールのリストです。(下の図を参照)
問題は、ユーザーがプロパティにアクセスする権利を持っているかどうかを確認したい場合、最悪の場合、n 個のツリーをトラバースする必要があることです (n はプロパティに割り当てられたロールの数です)。
たとえば、'Max' がプロパティを読み取ることができるかどうかを確認するには、'Max' が含まれているかどうか、マーケティング、管理、および管理ツリーを確認する必要があります。
役割システムまたは同等に強力なものを維持しながら、非常に高価なツリー検索を削除するアルゴリズムまたは代替アプローチを知っていますか?
完璧なケースは、n ロールの O(log(n)) のようなルックアップです。
ありがとう、フィン