次のようなMySQLDBテーブルが1つあります。resourcesテーブルです。
+----+-----------+------------+
| id | name | type |
+----+-----------+------------+
| 1 | guest | user |
| 2 | member | user |
| 3 | moderator | user |
| 4 | owner | user |
| 5 | admin | user |
| 6 | index | controller |
+----+-----------+------------+
次のテーブル、ルールテーブルに:
+----+---------+------+-------------+----------------------+
| id | user_id | rule | resource_id | extras |
+----+---------+------+-------------+----------------------+
| 1 | 2 | 3 | 1 | null |
| 2 | 3 | 3 | 2 | null |
| 3 | 4 | 3 | 3 | null |
| 4 | 5 | 3 | 4 | null |
| 5 | 6 | 1 | 1 | index,login,register |
| 6 | 6 | 2 | 2 | login,register |
| 7 | 6 | 1 | 2 | logout |
+----+---------+------+-------------+----------------------+
OK、長さは申し訳ありませんが、私は自分がやろうとしていることの全体像を伝えようとしています。したがって、その仕組みでは、ロール(別名ユーザー)にコントローラーへのアクセスを許可(ルール:1)し、ロールは別の ロールまたはロールからアクセスを継承 (ルール:3)して拒否 (ルール:2)することができますコントローラーに。(ユーザーはリソースであり、コントローラーはリソースです)
アクションへのアクセスは、extras列を使用して許可/拒否されます。
これはすべて機能しますが、zend内でACLを設定する場合は問題ありません。
私が今やろうとしているのは、関係を示すことです。そのためには、明示的に削除された場合に停止するコントローラーへのアクセスがロールに許可されている最低レベルを見つける必要があります。役割を一覧表示する予定です。ロールをクリックすると、そのロールがアクセスできるすべてのコントローラーが表示されます。次に、コントローラーをクリックすると、役割に実行が許可されているアクションが表示されます。
したがって、上記の例では、ゲストはログインアクションとともにインデックスコントローラのインデックスアクションを表示できます。メンバーは同じアクセスを継承しますが、ログインアクションと登録アクションへのアクセスを拒否されます。モデレーターはメンバーのルールを継承します。
したがって、ロールモデレーターを選択する場合。コントローラのインデックスを一覧表示したいのですが。コントローラをクリックすると、許可されたアクションがaction:indexとして表示されます。(元々はゲストに付与されていましたが、その後は許可されていません)
これを行う例はありますか?私は明らかにZendMVC(PHP)とMySQLを使用しています。単なる説得力のあるコード例でさえ、有用な出発点になるでしょう-これは私がまとめているジグソーパズルの最後の部分の1つです。
PS明らかに私はACLオブジェクトを持っています-それを補間する方が簡単になるのでしょうか、それともPHP / MySQLを介して自分で行う方が良いのでしょうか?
目的は、役割がアクセスできるものを示し、GUIスタイルで役割、コントローラー、およびアクションを追加または編集できるようにすることです(これはやや簡単です)-現在、私は以前と同じようにDBを手動で更新していますサイトの構築。