访问symfony中的setter 2

时间:2014-01-06 13:49:32

标签: php symfony

我问自己哪种方式可以访问网络应用程序中的setter。

基本示例:

  • a Band有属性
  • 只有乐队成员才有权更改

这里开始提出问题,提供此问题的最佳方式是什么。

我通常使用的方法是编写一个服务类,在每个方法中调用它。 例如:

public function changePropertyAction ($bandname) 
{  
    if(!BandAuthService::isBandMember($bandname)) {
        // redirect
    }
    // change the property to a new one
}

public function changeAnotherPropertyAction($foo)
{
    if(!FooAuthService::isFooMember($foo)) {
        // redirect again
    }
}

还有另一种方式,用户在此操作中调用的每个操作,系统都必须检查它是否是乐队成员?

1 个答案:

答案 0 :(得分:3)

管理对象权限的一个好方法是使用ACL(访问控制列表)。 ACL可以被视为Symfony角色系统,但应用于数据库中的每个对象。

因此,DB中的每条记录都有一个所有者,他们拥有所有访问权限;但你也可以给其他用户一些权利,比如查看,编辑......

最后你用以下的东西检查:

$securityContext->isGranted('EDIT', $band)

您可以找到简单的演示文稿here以及有关ACL here的更多详细信息。