私は、さまざまなユーザー グループがリソースへのさまざまなアクセス権を持つ Web アプリケーションに取り組んでいます。これまでのところ特別なことはないと思いますが、注意点があります。アプリケーションは「ドメイン」に分割されているため、クライアント組織のそれぞれが独自のコンテンツを持っています。ここでは、より単純なモデルを使用して問題を説明しています。
各ドメインには同じリソース タイプがありますが、各リソース インスタンスは 1 つのドメインにのみ接続されます。1 つのドメインの場合は次のようになります。
Resources: stories, announcements
Roles:
guest // read only access
root // unlimited access
editor // like guest, but with r/w access to resource "stories"
admin // r/w access to both resources
Zend_Acl を使用してこれを実装するための 2 つの異なるアプローチを考え出しました。1 つ目は、ドメインごとに上記をコピーして、ドメインごとに異なる ACL を使用することです。2 つ目は、1 つの ACL のみを使用し、各ドメインに新しいロールを追加することです。
Domains: domain0, domain1, domain2
Roles:
guest
root
editor-domain0
editor-domain1
editor-domain2
admin-domain0
admin-domain1
admin-domain2
2 番目のアプローチには、ユーザーがあるドメインの管理者でありながら、別のドメインの編集者になることができるという利点があります (実際に発生する可能性があります)。ただし、ロールが静的ではないという欠点もあります。ドメインを追加または削除するたびに生成する必要があります。
これらのアプローチのいずれかが有効か、または複数のドメインを処理するためのより良い方法はありますか?