symfony 安全限制访问路由列表到指定的一组 ips
symfony security restrict access to a list of route to specified set of ips
我有一个 Symfony 应用程序,需要将对路径列表的访问限制为一组指定的 ip。
对于仍在开发中但将分阶段上线的网站来说,这是必需的。完成的路径应该是任何人都可以访问的。
其他路径应该只能从一组指定的 IP 地址访问。
否则应该显示一个简单的 403。
路径不共享相同的前缀。
我也不想临时更改实际路径。
执行此操作的最佳方法是什么?
在 access_control 中添加大量项目感觉不是个好主意。
我可以添加防火墙侦听器或可以同时检查 ip 和请求路径的东西吗?我可以从那里抛出一个简单的 AccessDenied 异常吗?
你想要的是在security.yml下的access_control
下配置它
# 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 }
你也可以使用 ips: [1.2.3.4, 5.6.7.8]
而不是 ip
角色来自您的提供商,在上面的示例中,它直接添加到配置中。
所有相关信息都在这里: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
我有一个 Symfony 应用程序,需要将对路径列表的访问限制为一组指定的 ip。
对于仍在开发中但将分阶段上线的网站来说,这是必需的。完成的路径应该是任何人都可以访问的。
其他路径应该只能从一组指定的 IP 地址访问。 否则应该显示一个简单的 403。
路径不共享相同的前缀。 我也不想临时更改实际路径。
执行此操作的最佳方法是什么? 在 access_control 中添加大量项目感觉不是个好主意。
我可以添加防火墙侦听器或可以同时检查 ip 和请求路径的东西吗?我可以从那里抛出一个简单的 AccessDenied 异常吗?
你想要的是在security.yml下的access_control
下配置它# 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 }
你也可以使用 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