【问题标题】:symfony access_control not workingsymfony access_control 不工作
【发布时间】:2014-10-08 02:33:56
【问题描述】:

我的 access_control 在 security.yml 中不起作用。我已经清除了缓存没有任何结果:)

当我阅读documentation 时,我发现了任何错误......通常,只有 ROLE_ADMIN 应该有权访问路径 /user/。角色正确,我用

测试过
{% if is_granted('ROLE_ADMIN') %}   

在树枝里面。

安全性: 编码器: FOS\UserBundle\Model\UserInterface: pbkdf2

role_hierarchy:
    ROLE_CUSTOMER_REVISION: ROLE_USER
    ROLE_CUSTOMER_MANAGER:  [ROLE_CUSTOMER_REVISION, ROLE_IOS]
    ROLE_CUSTOMER_ADMIN:    ROLE_CUSTOMER_MANAGER
    ROLE_ADMIN:             [ROLE_CUSTOMER_ADMIN]

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_USER }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/user/, role: ROLE_ADMIN }

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_provider: form.csrf_provider
            default_target_path: /{locale}/
        logout:       true
        anonymous:    true

我是否做错了我看不到的事情?

【问题讨论】:

    标签: symfony routes access-control


    【解决方案1】:

    您必须将 acces_control 子句从最具体到最一般进行排序:

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
        - { path: ^/user/, role: ROLE_ADMIN }
        - { path: ^/, role: ROLE_USER }
    

    这是因为/admin路由也匹配^/模式,所以限制模式^/admin/必须放在前面。

    【讨论】:

    • 您好,感谢您的快速反馈。我按照你出现的方式整理了它。但我仍然可以访问。我想,之前使用“语言环境”并不重要,因为我使用 ^ 不是吗?角色 [ROLE_CUSTOMER_MANAGER, ROLE_USER]
    • 我从未在 Symfony 的 URL 中使用区域设置,但也许您必须以这种方式更改所有模式:^/[a-z]{2}/admin/
    • 这在我的树枝模板中很奇怪,它工作得很好。所以我想这不是角色本身的问题。
    猜你喜欢
    • 1970-01-01
    • 2018-10-31
    • 2017-07-23
    • 2017-06-28
    • 2019-07-26
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    相关资源
    最近更新 更多