0

Symfony2 を使用して「複雑な」セキュリティ/プライバシー システムを処理する最善の方法を見つけようとしています。

と に関する多くのドキュメントを読みましたがROLESACLs何か違うものを探しています。オブジェクトのプロパティに基づいて権利を計算する必要があります。

私の場合、Userオブジェクトと他の複数のオブジェクト ( ProjectTaskLabel、およびその他...) があります。

データベースに権利を保存せずに、あらゆる種類のオブジェクトを読み書きできるUserかどうかを確認する必要があります(システムが行っているように)。権利は、と特定のオブジェクトとの関係に基づいて「計算」する必要があります。ACLUser

たとえば、は のメンバーであり、 は に属しているため、 に書き込むことができUser(1)ます。Task(2)Project(3)Task(2)Project(3)

セキュリティ サービスの役割はそれを処理できません。ACL はそれを処理できますが、製品の存続期間中に権利が大幅に変更されることがわかっているため、権利をデータベースに保存したくありません。

そのようなニーズに対する既知の優れた方法はありますか、それとも独自のシステムを作成する必要がありますか?

ありがとう。

4

1 に答える 1

1

「製品の寿命の間にそれらは大きく変わるだろう」-> IMO、データベースに保存するのが最善であり、ACL はそれを行うための良い方法です。

上記の例では、ACL はユーザーとプロジェクト間の権限を管理するのに最適であり、タスクに対する権限はこのプロジェクト権限に依存しています。

これらの権利は、独自の aclVoter を実装する場合、コントローラーとビューでそれぞれ isGranted() と is_granted() でアクセスできます: http://symfony.com/doc/current/cookbook/security/voters.html

于 2012-08-14T16:06:16.027 に答える