【问题标题】:FOSUserbundle access controlFOSUserbundle 访问控制
【发布时间】: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


【解决方案1】:

这应该可行:

access_control:
     - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
     - { path: ^/, roles: ROLE_ADMIN }

更多信息: http://symfony.com/doc/master/book/security.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2015-10-08
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多