如何在Symfony2中添加新角色?

如何在Symfony2中添加新角色?,symfony,Symfony,我正在尝试在Symfony2中配置一个新角色。我编辑了security.yml文件,如下所示: role_hierarchy: ROLE_Administrator: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] ROLE_Doctor: ROLE_ADMIN ROLE_Patient: ROLE_USER access_control: - { path: /login, ro

我正在尝试在Symfony2中配置一个新角色。我编辑了
security.yml
文件,如下所示:

role_hierarchy:
        ROLE_Administrator:  [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
        ROLE_Doctor: ROLE_ADMIN
        ROLE_Patient:  ROLE_USER
access_control:
        - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, roles: ROLE_Administrator }
然而,当我尝试登录时,我总是得到:

访问被拒绝
403禁止
-AccessDeniedHttpException
1链接异常:AccessDeniedException»


我读了报纸上的文件。我不知道我做错了什么。

在security.yml、层次结构和访问控制中,角色必须相同

role_hierarchy:
    ROLE_Administrator:  [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
    ROLE_Doctor: ROLE_ADMIN
    ROLE_Patient:  ROLE_USER
access_control:
    - { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, roles: ROLE_ADMIN }
您可以定义所需的角色。您可以根据需要将管理员称为ROLE\u admin或ROLE\u Administrator,但在任何情况下都必须使用相同的名称。如果你用了两个不同的名字Symfony,你就认为你指的是两种不同的角色。然后,在角色层次结构中,您可以定义角色医生包括角色管理员等等。。。 我还没有看到您的控制器,但您肯定使用了不允许查看路径的角色定义了您的用户:^/因为您通过了防火墙(您已登录),但未通过访问控制(您不允许查看此页面)

注意因为

    ROLE_Doctor: ROLE_ADMIN
    ROLE_Patient:  ROLE_USER

在上述配置中,角色为\医生角色的用户也将具有角色\管理员角色,角色\患者也将具有角色\用户角色。文档

感谢您的回复。我已经试过了,但仍然出现同样的错误。你如何在你的用户中设置角色?可能是有错误,显示你的控制器。你是对的!我在控制器中做了一些错误的事情。您能解释一下什么时候使用管理员角色吗?例如,在您的代码中,您使用了
ROLE\u ADMIN
而不是
ROLE\u Administrator
,因此,我从未见过我们何时/如何使用它。我编辑了答案。如果你有更多的疑问,就问吧!很好的解释。还有一个问题。为什么使用
-{path:^/,roles:ROLE\u ADMIN}
而不是
-{path:^/,roles:ROLE\u Administrator}