路由的Symfony角色规则 - 拒绝访问

问题描述 投票:0回答:2

我在将路线“仪表板”保护到自定义用户角色时遇到问题。我正在使用FOSUserBundle并且我知道由于到期用户在默认情况下被赋予ROLE_USER - 即使此角色确实出现在用户表中。

在用户登录(这通过Steam发生)我添加一个新的自定义

$user->setRoles(['ROLE_LOGGED_STEAM_USER']);

我的问题就是这样 - 用户点击站点 - 用户登录 - 重定向到仪表板路由 - 出现拒绝访问错误。

我还禁用了安全线并转出了我可以从令牌用户对象中拉出的ROLES以确认ROLE存在并匹配规则

这是我的安全ACL

security:
encoders:
    FOS\UserBundle\Model\UserInterface: sha512

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

providers:
    steamauth:
        id: steam.user_provider
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        provider: steamauth
        pattern: ^/
        form_login:
            provider: fos_userbundle

        logout:       true
        anonymous:    true
        form_login:
            login_path:   login
            check_path:   login_check
        steam:
            default_route: controller.dashboard.home

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/dashboard, role: ROLE_LOGGED_STEAM_USER }

最初,我不知道所有角色都必须以ROLE_ *开头

以下是附加了here角色的用户条目的屏幕截图

我希望这很简单,我只是忽略了所以任何帮助都会很棒!

感谢您提前获取任何帮助/建议!

symfony authentication roles
2个回答
0
投票

不确定,但我认为你有一个错字,请尝试将角色转换为角色与“s”

 - { path: ^/dashboard, roles: ROLE_LOGGED_STEAM_USER }

0
投票

我认为你必须在“role_hierarchy”上注册你的自定义角色,所以代码将是:

role_hierarchy:
    ROLE_ADMIN:       [ROLE_USER, ROLE_LOGGED_STEAM_USER]
    ROLE_SUPER_ADMIN: ROLE_ADMIN

希望它有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.