我有一个防火墙规则,它和注释一起只允许以特定用户的身份访问操作。
此外,我想阻止任何登录,如果它不是来自某个网络。为了寻找解决方案,我遇到了遵循这个access_control的附加guide规则。
问题是,如果我通过IP规则限制我的登录页面。如果有人试图到达,我总是会得到一个ERR_TOO_MANY_REDIRECTS错误。我宁愿有一条“没有找到的网页”的信息,甚至不让外界的人知道有任何登录。
我怎么能用Symfony做这件事?
security.yml:
security:
...
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
default:
form_login:
provider: fos_userbundle
login_path: /login
use_forward: false
logout: true
anonymous: true
access_control:
- { path: ^/logout$, role: ROLE_ADMIN }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https, ips: [127.0.0.1, fe80::1, ::1]}
- { path: ^/login$, roles: ROLE_NO_ACCESS }
- { path: ^/admin, role: ROLE_ADMIN, requires_channel: https}发布于 2015-11-11 16:59:24
如果我没有弄错,Symfony在这里所做的就是尝试将用户的角色与路径所需的角色相匹配。如果它不匹配其中的一个角色,它会将用户发送到登录页面。
问题是,登录页面是用户刚来的地方。因此,用户进入无限循环,因为他们的条件永远无法满足。
我建议将登录页面本身置于防火墙之外,只需将IP检查放在登录页面的代码中,如果不满足,则将其转储到不在防火墙的其他地方。
https://stackoverflow.com/questions/33653483
复制相似问题