【发布时间】:2014-09-02 01:02:41
【问题描述】:
您好,我在 symfony 2 中的访问控制有问题。
我想保护除“/”路径之外的整个站点,因为存在登录。所以其他每条路由,例如“/hello”必须是安全的,如果没有用户登录,则重定向到/。
在我的安全配置中,我得到了这个配置:
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
login_path: /
logout: true
anonymous: ~
access_control:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/.*, roles: ROLE_ADMIN }
我做错了什么?
【问题讨论】:
-
不应该是
- { path: ^/.+, roles: ROLE_ADMIN }而不是.*吗? -
我试过了,但我仍然可以调用 /hello/test/ 站点
-
尝试反转线条。
access_control: - { path: ^/.+, roles: ROLE_ADMIN } - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY } -
access_control(与router一样)停在第一个正确路径上,因此所有内容都被path: ^/捕获,因此会进行匿名身份验证。
标签: symfony fosuserbundle access-control