【问题标题】:Symfony 2 Security.yml redirect loop and LogicException issuesSymfony 2 Security.yml 重定向循环和 LogicException 问题
【发布时间】:2013-04-24 09:32:42
【问题描述】:

好的,我想我需要牵手..

这个问题是上一个问题的后续问题: Symfony2 img/LdapBundle Bad credentials error

我已将其拆分为另一个问题。我遇到了与 security.yml 文件相关的两个不同问题,如下所述。

我有我的 security.yml:

security:
    firewalls:
        login_firewall:
            pattern:    ^/login$
            anonymous:  ~
            imag_ldap:
                check_path: login_check
                login_path: login
                csrf_provider: form.csrf_provider
                intention: authenticate
                provider: ldap
            logout:
                path:           /logout
                target:         /
        restricted_area:
            pattern:          ^/
            #anonymous:        ~ 
    providers:
        ldap:
           id: imag_ldap.security.user.provider

    encoders:
        IMAG\LdapBundle\User\LdapUser: plaintext

    access_control:
        - { path: ^/login,          roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/,               roles: IS_AUTHENTICATED_FULLY }

但我收到以下错误: LogicException: No authentication listener registered for firewall "restricted_area".

所以我尝试了以下方法:

security:
    firewalls:
        login_firewall:
            pattern:    ^/login$
            anonymous:  ~
            imag_ldap:
                check_path: login_check
                login_path: login
                csrf_provider: form.csrf_provider
                intention: authenticate
                provider: ldap
            logout:
                path:           /logout
                target:         /
        restricted_area:
            pattern:          ^/
            #anonymous:        ~ 
            imag_ldap:
                check_path: login_check
                login_path: login
                csrf_provider: form.csrf_provider
                intention: authenticate
                provider: ldap
            logout:
                path:           /logout
                target:         /

但这会导致重定向循环。

谁能告诉我如何让它工作?我正在尝试使用https://github.com/BorisMorel/LdapBundle ldap 捆绑包对用户进行身份验证..

【问题讨论】:

    标签: security symfony


    【解决方案1】:

    根据文档https://github.com/BorisMorel/LdapBundle#configure-securityyml,您应该有一个带有pattern: ^/ 的防火墙,其中也存在登录名。

    security:
        firewalls:
            restricted_area:
                pattern:    ^/
                anonymous:  ~
                imag_ldap:
                    check_path: login_check
                    login_path: login
                    csrf_provider: form.csrf_provider
                    intention: authenticate
                    provider: ldap
                logout:
                    path:           /logout
                    target:         /
        providers:
            ldap:
               id: imag_ldap.security.user.provider
    
        encoders:
            IMAG\LdapBundle\User\LdapUser: plaintext
    
        access_control:
            - { path: ^/login$,         roles: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/,               roles: IS_AUTHENTICATED_FULLY }
    

    您不需要身份验证的站点必须包含在acces_control 下并具有IS_AUTHENTICATED_ANONYMOUSLY 角色。这也适用于 dev-environment 中的分析器和工具栏(实际上对于 FOSUserBundle,但我认为这对于 LdapBundle 也很重要)。是的,我知道 symfony 文档说要专门为 ^/login$ 创建一个匿名防火墙,但是如果捆绑包支持匿名角色,那么使用上面的 acces_control 排除它就足够了。

        - { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }
    

    编辑: 并且不要忘记从包中导入路由定义而不是自己定义它们。见https://github.com/BorisMorel/LdapBundle#import-routing

    【讨论】:

    • 感谢多一点调试,我应该解决这个问题。不过,Quic Q - 这个捆绑包是 int eh vendor dir,不在源代码下,我认为路由不会因此而导入..
    • 是的,不知道为什么,但它没有找到No route found for "GET /app_dev/login"的路线
    • 我已经测试了全新的 symfony 2.2.1 安装并添加了 "imag/ldap-bundle": "2.1.*" 作为依赖项。捆绑包位于vendor/imag/ldap-bundle/IMAG/LdapBundle/ 下,配置捆绑包并导入路由后,php app/console router:debug 向我显示登录、登录检查和注销的路由。
    • 哦,在您的错误中,您可能忘记了 app_dev 之后的 .php 吗? => app_dev.php/....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多