モデル (テーブル):
- アイテム(id、名前、category_id、status_id)
- カテゴリ(id、名前)
- ステータス(ID、名前)
正確なカテゴリと正確なステータスによってアイテムへのアクセスを制限する必要があります。
状況 1。
Role1 は ID 1 と 3 のカテゴリを持つアイテムにアクセスできる必要がありますが、Role2 は ID 2 と 4 のカテゴリを持つアイテムにアクセスできる必要があります。
状況 2。
役割は項目へのアクセス権を持っている必要があります: カテゴリ 1 の場合はステータス 5 または 6 のアイテムのみ、カテゴリ 2 の場合はステータス 7 または 8 のアイテムのみ
カテゴリとステータスを作成および削除できます。
このようなアクセス制御を RBAC の概念で実装するにはどうすればよいですか?
状況 1 の場合、私の考えは、「accessItemWithCategory_{$categoryId}」のような名前のアクセス許可を動的に作成し、それを適切な役割に割り当てて、ユーザーができるかどうかを確認することでした(「accessItemWithCategory_{$categoryId}」)。それは機能しますが、気分が悪いだけです。
状況2の場合、このようなアプローチを続けると、「accessItemWithCategory_{$categoryId}_Status_{$statusId}」のようなアクセス許可が得られますが、それは醜く、非常に柔軟性がありません。
パーミッション名に id を使用しない場合はどうすればよいですか? ロールがアイテムにアクセスできるようにするロールとアイテムパラメータで追加のテーブルをチェックするルールで単純なアクセス許可「accessItem」を使用できますか? しかし、それは承認制御を RBAC の外に移すことを意味し、役割階層のサポートによって地獄に落ちます。