我读了这页关于Symfony security!
的内容但是我不能使用access_control。我有两条路线和仪表板。返回仅适用于ROLE_SUPER_ADMIN,并且为了转到仪表板,必须对用户进行身份验证。
匿名用户可以到处去,ROLE_USER可以返回(仅限SUPER ADMIN)
这是我的文件security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/dashboard, roles: ROLE_USER }
- { path: ^/back, roles: ROLE_ADMIN }
感谢您的帮助
答案 0 :(得分:2)
当然,匿名用户可以到处走!看看你的第一条规则
access_control:
- { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
即使是/back
路径,规则似乎也会正常运行,因为您点击了授予操作的第一个access_control
规则
更快的解决方案:尝试颠倒您的规则订单
更好的解决方案:尝试编写更好(不太常规)的规则[如果您的应用允许您这样做]