Symfony 3 安全性 - Access_control 不适用于一条路线
Symfony 3 security - Access_control doesn't work for one route
我目前正在开发 PDF 生成器,但在访问 url 时遇到问题。
任何人都应该能够下载 PDF。
在我的 security.yml 中,我目前有这个:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy: ~
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: ROLE_USER }
- { path: ^/, role: ROLE_USER }
我希望人们能够访问以下内容url:/admin/maintenance/pdf/{id}
所以我添加了以下行:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: ROLE_USER }
- { path: ^/, role: ROLE_USER }
- { path: ^/admin/maintenance/pdf/$, role: [ROLE_USER,IS_AUTHENTICATED_ANONYMOUSLY] }
但是当我没有登录时,我仍然被重定向到登录页面。
我做了几次测试,是下面一行有问题:
- {path: ^ /, role: ROLE_USER}
我想我对 url 的访问配置错误。
有人可以帮助我吗?
谢谢
将更具体的规则上移,以便首先匹配它们。
ACL中的项目是顺序处理的,所以需要放在前面:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/maintenance/pdf/$, role: [ROLE_USER,IS_AUTHENTICATED_ANONYMOUSLY] }
- { path: ^/admin, role: ROLE_USER }
- { path: ^/, role: ROLE_USER }
我目前正在开发 PDF 生成器,但在访问 url 时遇到问题。
任何人都应该能够下载 PDF。 在我的 security.yml 中,我目前有这个:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy: ~
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: ROLE_USER }
- { path: ^/, role: ROLE_USER }
我希望人们能够访问以下内容url:/admin/maintenance/pdf/{id}
所以我添加了以下行:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: ROLE_USER }
- { path: ^/, role: ROLE_USER }
- { path: ^/admin/maintenance/pdf/$, role: [ROLE_USER,IS_AUTHENTICATED_ANONYMOUSLY] }
但是当我没有登录时,我仍然被重定向到登录页面。
我做了几次测试,是下面一行有问题:
- {path: ^ /, role: ROLE_USER}
我想我对 url 的访问配置错误。
有人可以帮助我吗? 谢谢
将更具体的规则上移,以便首先匹配它们。
ACL中的项目是顺序处理的,所以需要放在前面:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/gc/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/maintenance/pdf/$, role: [ROLE_USER,IS_AUTHENTICATED_ANONYMOUSLY] }
- { path: ^/admin, role: ROLE_USER }
- { path: ^/, role: ROLE_USER }