我有一个 Web 应用程序,其中有 5 个级别的用户,例如
- 行政人员
- 组织负责人
- 本地公司负责人
- 老师
- 父母
- 学生们
现在每个用户都将拥有不同的登录页面或或多或少的标签或功能。
现在我想知道是不是我只将其作为一个实体,然后在不同实体中扮演角色,以便我可以简化登录过程
您应该改用 twig 函数is_granted()
并让 Security 组件处理角色。这有一些进步,例如嵌套角色定义。您可以在http://symfony.com/doc/current/book/security.html#roles找到更多信息。
我强烈建议你走这条路!
{% if is_granted('ROLE_ADMINISTRATOR') %}
Do something
{% endif %}
这是您将如何进行的示例
你的控制器:
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 %}