PHP Webアプリケーションのアクセス制御リストを実装するのを手伝ってください。私は特にZend_ACLを使用しています。ACLに含まれるリソースは?オブジェクトのモデルまたはオブジェクトのインスタンス?
どのような特定のエンティティ(ユーザーまたはグループであるか)がどのリソースにアクセスできるかについて、きめ細かなアプリケーションの制御が必要です。私は、特定のリソースインスタンスへのアクセスだけでなく、そのタイプのすべてのリソースへのアクセスを許可したいと考えています。たとえば:
- ユーザ#1は、すべての記事に編集権限を持っている
- ユーザ#2は、ゲストエディタで、ポストID#5
- グループ#1(ゲスト)に編集権限を持っている上の権限を読みましたすべて
- ユーザーはguestから継承したユーザーグループに属します。
私の質問は次のとおりです。ACLはリソースのタイプまたはその特定のインスタンスを参照する必要がありますか?
- 助成編集:私は、ユーザーに基本的な、リソース型ワイドのこのようなACLを使用してpriviledgesを付与する必要があります#1は
- は、特定のリソース
または私は資源の私の異なったタイプのすべての個々のインスタンスのためのリソースを作成する必要に助成金やデニス・追跡するために、例外テーブルを実装するすべてのリソースに読んですべてのユーザーがすべてのリソースを読むことができるように、認可の暴走を続けますか?むしろ凶悪なようです。
私の現在の解決策は、リソース継承を使用して、タイプのない親の最もリソースを作成し、各タイプに対してこのルートの子を作成し、次に各インスタンスの各タイプの子を作成します。これにより、ある特定のタイプを認可し、いくつかのインスタンスを拒否したり、特定のタイプを拒否したり(ただし、上記のユーザ#2のように)1つのインスタンスに付与することができます。これは私の許可システムをうまく統合しますが、私のニーズはより複雑です。すぐに、リソースタイプはネストされます。だから、私は両親や子供になることができる別のモジュールを用意します。一例:サイトワイドフォトギャラリーモジュール。アナウンスメントモジュールの下に別のより独占的なギャラリーがあります。私はこれに対処するために何をすべきかについてはあまりよく分かりません。私はまだ、すべてのギャラリーに、あるいはただ1つに、あるいはその下にあるいくつかの写真を付与する能力を持っていたいと思います。 Zend_ACLは、リソースの多重継承をサポートしていないことに注意してください。
これを実装する最良の方法は何ですか?すべてのACLを使用するか、または各モジュールに組み込まれたロジックを使用していますか?
あなたの答えはまさに私が必要としていたものでした。ありがとう! – hornairs