Security Symfony2通过IP保护不工作

Security Symfony2通过IP保护不工作,security,symfony,yaml,Security,Symfony,Yaml,在我的Symfony 2.3.1安全YML中,我有这一行 security.yml access_control: - { path: ^/mysecurearea, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 0.0.0.0 } 基于此: 我的印象是,这个路由和类似的路由,例如/mysecurirea/something应该只能通过IP 0.0.0.0请求访问 问题是,我仍然可以访问它 有什么想法吗?所以,我只想阻止人们访问某个区域,除非他们拥

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

security.yml

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

我的印象是,这个路由和类似的路由,例如/mysecurirea/something应该只能通过IP 0.0.0.0请求访问

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


有什么想法吗?

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

所以为了实现我想要的,我需要在上面增加一行。 角色\u无\u访问权限实际上不存在。您只需要在那里添加一些描述性的文本,并注意一个有效的角色。由于它不是有效的角色,请求者无法再访问该区域。
这有点像黑客,但就我而言,它做得很好。

mysecurity.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列表。

您在尝试访问mysecurearea时是否已登录?否。我已经解决了问题所在,但我会等几天,看看是否有其他人能找到答案。然后我可以给他们打分,把他们的答案标记为正确。你清除了你的缓存了吗?防火墙部分有什么?缓存很好。防火墙只有/^的登录信息,但这并不影响对任何内容的访问。e、 g.是否进行了匿名身份验证?是否有权访问/^如果我使用此解决方案,我总是会收到“ERR\u TOO\u MANY\u REDIRECTS”的防火墙规则(
login\u path:/login use\u forward:false
)。我能做什么呢?这表明它们被碰撞到的地方,该用户也无法访问。e、 g.当Symfony无法匹配该区域时,它会将用户重定向/转发到登录页面。因此,如果它也不能匹配登录页面,那么它将进入一个无限循环。匿名用户是否可以访问登录页面?否。完整登录应该仅适用于某些ip地址。我怎样才能解决这个问题?如果从不允许的ip地址调用该登录名和所有受限内容,则会显示“未找到”;第二,如果是正确的ip,则访问受限区域的人员会重定向到该登录名,这与正常情况相同。根据我的评论得出结论
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 }