这是关于SecurityVoter的问题。
使用Symfony 2.6,您可以创建更简单的安全选民,以检查用户是否具有对象的特定权限:
protected function isGranted($attribute, $object, $user = null)
{
switch ($attribute) {
case self::VIEW:
return $object->getAuthor() === $user;
case self::EDIT:
return $object->getAuthor() === $user && time() - $object->getAddedAt()->getTimestamp() <= TicketMessage::PERMIT_EDIT_GAP;
default:
return false;
}
}
有效。但是如果我想根据类而不是对象检查属性呢?例如,创建一个“创建”权限,用于创建暂时不存在的新对象。
代码示例:
is_granted('create', 'AppBundle\Entity\MyEntity')
或:
is_granted('create', 'AppBundle:Entity')
有办法吗?
感谢。
答案 0 :(得分:-1)
请阅读Symfony Best Practicles和Symfony Voters上的文档,以便更好地理解Symfony的概念。 如果您确实需要仅根据类属性检查权限,那么决定将常量。因此,Symfony Best Practicles:
中描述了控制应用程序逻辑的推荐方法最佳实践:使用常量定义配置选项 很少改变。
正如您所看到的,有两种推荐的方法可以满足您的需求:
YourBundle\SecurityManager
)parameters.yml
进行配置