Symfony2通过IP安全无法正常工作

时间:2013-10-03 23:57:24

标签: security symfony yaml

在我的Symfony 2.3.1安全YML中,我有这一行。

security.yml

access_control:
    - { path: ^/mysecurearea, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 0.0.0.0 }

基于此: http://symfony.com/doc/current/book/security.html

我的印象是这条路线和路线喜欢它,例如/ mysecurearea / something应仅可从IP 0.0.0.0

的请求访问

问题是,我仍然可以访问它。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

所以,我想做的就是阻止人们访问某个区域,除非他们拥有有效的IP。我没有完全理解的是,access_control只能提供角色,而不是拒绝访问。 (事后才有意义。)

    - { path: ^/mysecurearea, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 0.0.0.0 }
    - { path: ^/mysecurearea, roles: ROLE_NO_ACCESS }

为了实现我想要的,我需要在上面添加额外的行。 ROLE_NO_ACCESS实际上并不存在。您只需要在那里添加一些描述性的文本,并注意一个有效的角色。由于它不是有效角色,因此请求者无法再访问该区域。 这有点像黑客,但就我的目的而言,它完美地完成了工作。

答案 1 :(得分:3)

我的 security.yml 有一些默认条目,它们以某种方式导致它忽略了IP规则。我没有任何登录功能,所以我的用例非常简单。

这是我在Symfony 2.3.6中使用的整个security.yml:

security:
    firewalls:
        anonymous:
            anonymous: ~

    providers:
        in_memory:
            memory:

    access_control:
        - { path: ^/foo, roles: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1] }
        - { path: ^/foo, roles: ROLE_NO_ACCESS }

只需更改^/foo路径和IP列表。