0

我试图找到使用 Symfony2 处理“复杂”安全/隐私系统的最佳方法。

我阅读了很多关于 theROLES和 the的文档,ACLs但我正在寻找不同的东西。我需要根据对象的属性计算权限。

在我的例子中,我有一个User对象和多个其他对象(ProjectTaskLabel等等......)。

我需要检查是否User可以在不将权限存储在数据库中的情况下读取写入ACL任何类型的对象(就像系统正在做的那样)。权利应该基于User和给定对象之间的关系“计算”。

例如,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 回答