【问题标题】:How to connect from SonataAdmin authenticator to other authenticator?如何从 SonataAdmin 验证器连接到其他验证器?
【发布时间】:2019-11-04 04:13:59
【问题描述】:

我有一个 symfony 应用程序,它在 Sonata Admin Bundle 中用于管理部分,它有自己的防火墙 (admin) 和应用程序用户部分的防火墙 (main)。

目前,与 Sonata 连接的管理员无法访问为用户设计的 API,因为它已针对 Sonata Admin Bundle 身份验证器进行身份验证,而对于 API,它会将他视为空用户或未经过身份验证一。

我想允许管理员访问为用户部分的防火墙后面的应用程序部分创建的 API。

security.yaml 文件中的防火墙配置:

 firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        admin:
            pattern:            ^/admin(.*)
            form_login:
                provider:       app_user_admin
                login_path:     admin_login
                use_forward:    false
                check_path:     admin_login
                failure_path:   null
            logout:
                path:           admin_logout
                target:         admin_login
            anonymous:          true
            guard:
                authenticators:
                    - App\Security\AdminLoginAuthenticator
        main:
            anonymous: true
            logout:
                path:   security_logout
            guard:
                authenticators:
                    - App\Security\UserLoginAuthenticator

有没有办法为管理员连接两个身份验证器?比如,在管理员成功登录时调用main 防火墙的身份验证器?

【问题讨论】:

    标签: php symfony authentication symfony4 symfony-security


    【解决方案1】:

    经过一番挖掘和帮助,我发现 symfony security 内置了类似的东西。

    它叫做Symfony context,做的事情完全一样。

    为了将来参考,这是您真正需要添加到配置文件的内容:

    firewalls:
            dev:
                pattern: ^/(_(profiler|wdt)|css|images|js)/
                security: false
            admin:
                context: just_a_random_name
                pattern:            ^/admin(.*)
                form_login:
                    provider:       app_user_admin
                    login_path:     admin_login
                    use_forward:    false
                    check_path:     admin_login
                    failure_path:   null
                logout:
                    path:           admin_logout
                    target:         admin_login
                anonymous:          true
                guard:
                    authenticators:
                        - App\Security\AdminLoginAuthenticator
            main:
                context: just_a_random_name
                anonymous: true
                logout:
                    path:   security_logout
                guard:
                    authenticators:
                        - App\Security\UserLoginAuthenticator
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      相关资源
      最近更新 更多