我目前正在开发 PDF 生成器,但访问网址时遇到问题。
任何人都应该能够下载 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 }
我希望人们能够访问以下网址:/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 }
关于php - Symfony 3 安全性 - Access_control 不适用于一条路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45503325/