如何在symfony2应用程序中管理角色

时间:2012-07-10 04:00:49

标签: php symfony

我有一个网络应用程序,我有5级用户,如

  1. 管理员
  2. OrganisationHead
  3. LocalCOmpany head
  4. 教师
  5. 父母
  6. 学生
  7. 现在每个用户都会有不同的目标网页或一些或多或少的标签或功能。

    现在我想知道是我只将它作为一个实体,然后在不同的实体中进行角色,以便我可以简化登录过程

2 个答案:

答案 0 :(得分:4)

您应该使用twig函数is_granted(),让安全组件处理角色。这有一些进步,例如嵌套角色定义。您可以在http://symfony.com/doc/current/book/security.html#roles找到更多信息。

我强烈建议你这样走!

{% if is_granted('ROLE_ADMINISTRATOR') %}
    Do something
{% endif %}

答案 1 :(得分:1)

这是一个如何实现它的例子

你的控制器:

public function indexAction()
{
    $user = $this->container->get('security.context')->getToken()->getUser();

    return $this->render('YourBundle:Page:index.html.twig', array('user_role' => $user->getRole()));
}

嫩枝:

{% if user_role == "administrator" %}
Menu 1, menu 2, menu3
{% elseif user_role == "organizationhead" %}
Menu 1, Menu 4
{% elseif user_role == "etc" %}
Menu 5
{% endif %}