Symfony2:如何通过IP地址限制/拒绝访问某些路由?

Ein*_*ius 6 access-control symfony fosuserbundle

我想禁止访问/login,/register如果客户的IP地址被禁止.

被禁止的IP的(黑色)列表存储在数据库中.

我怎么解决这个问题?

Nic*_*ich 5

从symfony 2.4开始,您可以在配置文件中使用表达式语言组件.

现在实现简单的IP检查很容易:

  • 使用从存储层获取禁止IP列表的access_manager方法(即getBannedIPs())创建服务(即)
  • 在安全配置中添加一个表达式,将返回的数组与客户端的IP地址进行比较
  • 而已.

# app/config/security.yml
security:
    # ...
    access_control:
        - path: ^/(login|register)$
          allow_if: "request.getClientIp() not in @=service('access_manager').getBannedIPs()"
Run Code Online (Sandbox Code Playgroud)

  • 我已经尝试过这个解决方案,但我在security.yml中收到错误的"意外字符"@"` (3认同)