Symfony 5.3多用户提供器下防火墙配置login_throttling报错如何解决
报错根源
当Symfony项目中注册了多个用户提供器时,login_throttling 监听器无法自动判断应使用哪个提供器的用户身份信息统计限流次数,因此触发歧义报错。
解决方案
为每个启用了login_throttling的防火墙显式绑定对应的用户提供器即可:
- 首先在防火墙配置根节点指定该防火墙默认使用的用户提供器
- 再在
login_throttling配置节点下显式指定限流规则关联的用户提供器,消除歧义
如果卖家端seller防火墙也需要启用登录限流,可按相同规则配置,也可以单独为卖家端定义独立的限流策略。
修改后配置示例(仅展示需调整的
firewalls节点) security: firewalls: main: # 绑定当前防火墙默认使用的用户提供器 provider: app_user_provider login_throttling: limiter: app.login_rate_limiter # 显式指定限流规则使用的用户提供器 provider: app_user_provider custom_authenticator: App\Security\LoginFormAuthenticator logout: path: app_logout seller: # 绑定卖家端防火墙的用户提供器 provider: sellers_provider # 若卖家端也需要限流,新增如下配置,不需要则可删除 login_throttling: limiter: app.login_rate_limiter # 也可单独定义新的limiter实现不同的限流规则 provider: sellers_provider custom_authenticator: App\SellerPanel\Security\SellerAuthenticator logout: path: seller_logout
修改完成后清空缓存即可正常使用登录限流功能。
内容的提问来源于stack exchange,提问作者ppoz21
相关产品推荐
相关产品推荐

