在我的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
的请求访问问题是,我仍然可以访问它。
有什么想法吗?
答案 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列表。