如何从 SonataAdmin 验证器连接到其他验证器?

How to connect from SonataAdmin authenticator to other authenticator?

我有一个 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 防火墙的身份验证器?

经过一些挖掘和一些帮助,我发现 symfony 安全性内置了类似的东西。

它叫做 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