我在将路线“仪表板”保护到自定义用户角色时遇到问题。我正在使用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角色的用户条目的屏幕截图
我希望这很简单,我只是忽略了所以任何帮助都会很棒!
感谢您提前获取任何帮助/建议!
不确定,但我认为你有一个错字,请尝试将角色转换为角色与“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
希望它有所帮助。