簡単に言うと、Zend ACL がリソースではなくロール間の多重継承をサポートするのはなぜですか?
アクセス許可を付与できるようにしたいリソースの大きなツリーがあります。過去に、これを表現するために私が行ったことは、2 つの異なるツリーを作成することでした。最初のものには、ツリー内の各タイプの汎用リソースがあります。2 番目には、これらの型のすべてのインスタンスが同じ方法で配置されています。木を重ね合わせると、同じレベルに同じタイプのオブジェクトが見つかることを意味します。次に、各オブジェクト インスタンスは、追加の親として最初のツリーのジェネリック オブジェクトを持つように設定されます。これにより、すべてのタイプのオブジェクトにデフォルトのアクセス許可を設定できるため、各インスタンスはそれらを定義する代わりにそれらを継承しますが、それでも各インスタンスへの洗練された特定のアクセス権を与えてくれます。
例:
サイトには 3 つのモジュールがあります。ユーザーは、ユーザー プロファイルなどを格納する場所です。現在の問題について活発な議論が行われるフォーラム ユーザーがペットの写真をアップロードできるギャラリー
したがって、上記のジェネリック ツリーは次のようになります。
モジュール / | \ ユーザー フォーラム ギャラリー / | \ プロフィールのトピックの写真 | | 役職
インスタンス ツリーは次のようになります。
モジュール_1 / / / | \ \ ユーザー1 ユーザー2 ユーザー3 フォーラム ギャラリー1 ギャラリー2 | | | | | | / \ / \ / \ プロフィール プロフィール プロフィール sub1 sub2 写真 写真 写真 写真 | | / \ ポスト1 ポスト2 ポスト3
また、ACL では、各ユーザー オブジェクト インスタンスが最初のツリーのユーザーから継承されます。したがって、デフォルトですべてを読み取り可能にしたいので、モジュールでの読み取りを許可します。すべてモジュールから継承しているので、すべて良いです。また、ユーザーが自分のプロファイルを編集できるようにしたいので、それぞれのプロファイルで各ユーザーに編集を許可します。ジェネリック ツリーはここでは役に立ちません。私のフォト ギャラリーが NSFW であるとしましょう。多重継承により、未登録ユーザーの写真の読み取りを 1 回の操作で拒否できます。多重継承がなければ、すべての写真を調べて、未登録ユーザーの読み取り権限を拒否する必要があります。写真がたくさんある場合、これは悪いニュースです。
これを行う方法を知っている人はいますか?私が考えることができる最も柔軟なソリューションを提供します。Zend_Acl を使用して実装できるより良いものを考えられる場合は、返信してください。
どうもありがとう。