Symfony2防火墙:用户具有正确的角色但"拒绝访问"

Bor*_*ich 5 symfony

我无法使防火墙规则正常工作.我有一个具有该角色的用户D-COMPLIANCEDIALOG和一个防火墙规则,用于授予对该规则的访问权限:- { path: ^/ , roles: D-COMPLIANCEDIALOG }.我仍然拒绝访问(访问被拒绝,用户既不是匿名的,也不记得我.).

#security.yml

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
    providers:
        reddot:
            id: reddot_user_provider

    firewalls:

        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        secured_area:
            pattern: ^/
            anonymous: ~
            http_basic: ~
            simple_form:
                authenticator: reddot_authenticator
                    check_path:    login_check
                    login_path:    login

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/ , roles: D-COMPLIANCEDIALOG }
Run Code Online (Sandbox Code Playgroud)

来自symfony profiler的用户数据:

Username    admin
Authenticated?  yes
Roles   [D-COMPLIANCEDIALOG]
Inherited Roles     { }
Token class Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken
Run Code Online (Sandbox Code Playgroud)

我检查了什么:

  • 控制器没有自己的安全设置
  • 角色名称似乎没有拼写错误
  • 它确实是防火墙规则中的最后一行,如果我删除它,我确实有权访问.

Vic*_*nov 9

角色名称不正确.请查看文档安全性 - 角色

您分配给用户的所有角色必须以ROLE_前缀开头.否则,Symfony的安全系统将不会以正常方式处理它们(即除非您正在做一些高级操作,将FOO这样的角色分配给用户,然后检查FOO,如下所述将不起作用).

输入"不正确"的角色名称时我遇到了同样的问题,并且也被错误消息搞糊涂了.