我在使用Symphony 2的项目中工作。这是一个复杂的项目,需要很多安全元素。我尝试创建ACL以授予或撤消用户的权限,但我遇到了问题:我不知道如何获取用户的权限。我需要一种最好的方法来管理ACL权限。
我需要从模块到数据库中的字段的权限级别,并在安全模块中检索此权限。
现在我将系统放在2个不同的数据库中,在一个数据库中我无法更改任何内容,另一个数据库包含我的所有安全表和其他内容,但我需要在这些数据库中授予权限。
我在考虑创建一个外部接口来管理ACL,但这与创建复制Symphony 2 ACL相同。
使用Symphony 2在系统中进行权限管理的最佳方法是什么?
和
我如何检查实体中字段的权限,因为方法是在树枝上我认为不是最好的方法,因为它会查询每个字段的数据库?
答案 0 :(得分:0)
您需要为用户设置角色,所有内容都在此处描述:http://symfony.com/doc/current/book/security.html#roles
定义角色后,您可以在访问控制列表中使用它们,或使用isGranted方法在任何控制器/模板中使用它们。这是SF2的最佳实践,据我所知,isGranted方法没有性能问题。
答案 1 :(得分:0)
您可以在控制器中的操作内以多种方式执行此操作:
public function helloAction($name)
{
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
throw $this->createAccessDeniedException();
}
// ...
}
Inside Twig:
{% if is_granted('ROLE_ADMIN') %}
<a href="...">Delete</a>
{% endif %}