使用Symfony-ACL实现阻止列表

时间:2016-07-27 16:28:03

标签: acl symfony

以下是该方案: 我有一个页面列表,任何人都可以使用ROLE_READER访问这些页面。 但是,某些特定的书籍不应该被某些读者访问或读取(即使使用ROLE_READER)。

另一个角色(如ROLE_SPECIAL_READER)的创建不是用户友好的,因此不是一个选项。

因此,我认为我们需要某种黑名单控制。 我的问题是: - 这是否可以使用Symfony-ACL实现? - 如果是,那么,我们该怎么做?

谢谢和最诚挚的问候。

1 个答案:

答案 0 :(得分:1)

这是一个简单的用例,我建议您使用Voter而不是ACL,因为document表明它可能会因此类用例而过度使用。

如果您使用的是投票人,则write your custom voter可以访问User个对象以及Page个对象,您可以决定哪些用户有权使用哪个用户? ;吨

在内部,ACL正在使用它自己的选民来检查权限。它有另一个层,用于将基于实体(ROLE,USER,OBJECT)的权限存储到数据库中,并在需要时获取。

根据我的个人经验(doc也说过),ACL处理起来并不复杂。

使用选民获得更多好处:

  1. 您可以根据项目分类/要求创建多个Voter
  2. 稍后,如果您改变主意使用ACL,则无需更改控制器中的代码。
  3. 易于调试,重量轻。
  4. 希望它对你有所帮助。