symfony security限制访问指定的ips集

时间:2015-10-15 12:19:40

标签: security symfony firewall

我有一个Symfony应用程序,需要限制对指定的一组ips的路径列表的访问。

这仍然是一个仍在开发中的网站,但将分阶段投入使用。任何人都可以访问所完成的路径。

其他路径只能从指定的一组IP地址访问。 否则应该显示一个简单的403。

路径不共享相同的前缀。 我也不想暂时改变实际路径。

这样做的最佳方法是什么? 在access_control中添加大量项目并不是一个好主意。

我可以添加防火墙侦听器或可以检查ip和请求路径的内容吗?我可以从那里抛出一个简单的AccessDenied异常吗?

1 个答案:

答案 0 :(得分:0)

您想要的是在access_control

下的security.yml中配置它
# app/config/security.yml
security:
    # ...
    providers:
        in_memory:
            memory:
                users:
                    ryan:
                        password: ryanpass
                        roles: 'ROLE_USER'
                    admin:
                        password: kitten
                        roles: 'ROLE_ADMIN'     

    access_control:
        - { path: ^/admin, roles: ROLE_USER, ip: 127.0.0.1 }
        - { path: ^/admin, roles: ROLE_USER, host: symfony\.com$ }
        - { path: ^/admin, roles: ROLE_ADMIN, methods: [POST, PUT] }
        - { path: ^/admin, roles: ROLE_USER }

而不是ip,您也可以使用ips: [1.2.3.4, 5.6.7.8]

角色来自您的提供商,例如上面的内容会直接添加到配置中。

所有相关信息都在这里:http://symfony.com/doc/current/cookbook/security/access_control.html

最好还阅读整个安全部分: http://symfony.com/doc/current/book/security.html http://symfony.com/doc/current/book/security.html#roles