3

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

安全.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 的请求访问

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

有任何想法吗?

4

2 回答 2

6

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

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

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

于 2013-10-07T13:57:43.783 回答
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 列表即可。

于 2014-02-02T16:41:45.787 回答