首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IP保护登录的Symfony 2

使用IP保护登录的Symfony 2
EN

Stack Overflow用户
提问于 2015-11-11 15:08:53
回答 1查看 767关注 0票数 2

我有一个防火墙规则,它和注释一起只允许以特定用户的身份访问操作。

此外,我想阻止任何登录,如果它不是来自某个网络。为了寻找解决方案,我遇到了遵循这个access_control的附加guide规则。

问题是,如果我通过IP规则限制我的登录页面。如果有人试图到达,我总是会得到一个ERR_TOO_MANY_REDIRECTS错误。我宁愿有一条“没有找到的网页”的信息,甚至不让外界的人知道有任何登录。

我怎么能用Symfony做这件事?

security.yml:

代码语言:javascript
复制
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}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-11 16:59:24

如果我没有弄错,Symfony在这里所做的就是尝试将用户的角色与路径所需的角色相匹配。如果它不匹配其中的一个角色,它会将用户发送到登录页面。

问题是,登录页面是用户刚来的地方。因此,用户进入无限循环,因为他们的条件永远无法满足。

我建议将登录页面本身置于防火墙之外,只需将IP检查放在登录页面的代码中,如果不满足,则将其转储到不在防火墙的其他地方。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33653483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档