我希望禁止客户端IP地址被封禁的访问
被封禁的IP地址黑名单存储在数据库中。
我该如何解决这个问题?
/login
和/register
。被封禁的IP地址黑名单存储在数据库中。
我该如何解决这个问题?
/login
和/register
。access_manager
),其中包含一个方法(例如getBannedIPs()
),该方法从存储层获取禁止访问的IP列表# app/config/security.yml
security:
# ...
access_control:
- path: ^/(login|register)$
allow_if: "request.getClientIp() not in @=service('access_manager').getBannedIPs()"
您可以订阅注册控制器上的事件。
对于注册,您可以订阅REGISTRATION_INITIALIZE
事件。
这是控制器事件 的文档。
第二个解决方案是覆盖登录和注册控制器方法,但您将不得不复制登录/注册操作的所有代码。
access_control
下的表达式语言组件即可。请参见我的答案 :) - Nicolai Fröhlich
kernel.request
监听器来匹配IP并将flashmessage添加到会话flashbag中......或者只需使用三元运算符和一个条件,该条件添加flashmessage并始终返回true....(request.getClientIp()不在@=service('access_manager').getBannedIPs()中)?(@=service('session').getFlashBag().add('warning','您已被禁止。')!= false):false
。明白了吗? - Nicolai Fröhlich意外字符“@”
。 - Einius