繁体   English   中英

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

[英]Symfony Role Rules for Routes - Access Denied

我在保护到自定义用户角色的路线“仪表板”时遇到问题。 我正在使用FOSUserBundle,并且我知道由于默认情况下,由于适当的原因,为用户提供了ROLE_USER-即使此角色确实出现在用户表中。

在用户登录时(通过Steam进行),我添加了新的自定义

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

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

我还禁用了安全线,并转出了我可以从令牌用户对象中提取的角色以确认角色存在并匹配规则的角色

这是我的安全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_ *开头

这是用户条目的屏幕快照,并在此处附加了角色

我希望它只是简单的即时消息而被忽略了,所以任何帮助都会很棒!

感谢您的帮助或建议!

不确定,但我认为您有错别字,请尝试将角色改为“ s”

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

我认为您必须在“ role_hierarchy ”上注册您的自定义角色,因此代码应为:

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

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM