1

ユーザーを持つ Symfony2 Web サイトを作成しており、各ユーザーは次のように複数の権限を持つことができます。

User1: manage users , manage sales , manage repository
User2: manage repository
user3: manage sales , manage repository
...

そのようなシステムの場合、使用する正しい許可システムは何ですか?
RolesまたはACLsまたはvotersまたは何か他のものですか?

ありがとう

4

1 に答える 1

2

役割

「一般的な」権限を付与する場合は、ロールで問題ありません。

たとえば、ユーザーがすべてまたはユーザーを管理できるようにする必要がある場合は、そのロールを作成できますROLE_USER_MANAGER。または、販売を管理する権限を彼に付与する場合は、ROLE_SALES_MANAGER役割を付与できます。

したがって、基本的に、一部のエンティティに対するアクセス許可の数が一般的に制限されている場合は、ロールを使用します。

たとえば、エンティティ名と ID を含むロールを付与することで、それらを他のものに使用できますROLE_MANAGER_REPOSITORY_23。カスタム ボーターを使用すると、そのロールを持つユーザーが ID 23 のリポジトリを管理できることを知ることができます。好きじゃない。

ACL

特に個々のモデルに対して、多くの動的権限付与がある場合は、ACL が最適です。通常は、データ ストアからより多くのデータを取得する必要があるため、パフォーマンスが少し低下しますが、この目的にははるかに適しています。

Symfony2 ACLを使用すると、パーミッションの付与と確認が非常に簡単になり、個々のユーザーが相互にパーミッションを付与できるようにすることさえできます。

さらに、 Symfony ACL ドキュメントの紹介部分では、これらのアプローチの両方を示し、それぞれのいくつかの浮き沈みも指摘しています。

于 2014-10-20T16:59:40.543 に答える