php - Symfony 3 安全性 - Access_control 不适用于一条路由

标签 php symfony security routes roles

我目前正在开发 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/

相关文章:

docker - 如果用户可以访问 docker 容器中的终端,他们可以做任何事情来破坏其所在的硬盘吗?

http - JWT 声明名称是否区分大小写?

php - 哈希游戏中一个岛屿的所有可能组合

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

php - apache 环境变量中的配置变量

php - 当表列连接两次时从 mySQL 回显数据

json - Symfony2 HHVM 3.4 序列化程序问题

php - FOSUserBundle 重置密码不适用于模拟用户配置

php - Twig 中不存在 Symfony 变量

wcf - 我对 WCF 与 Internet 上的 SSL 的传输级安全性感到非常困惑