首页 > 解决方案 > Symfony 登录在 TEST 和 PROD 环境中失败

问题描述

我有 2 个安全提供程序的 symfony 5.3 安装。

如果我使用的是 DEV 环境,我可以使用两个提供商的用户登录,但是当我将环境更改为 TEST 或 PROD 时,我只能使用其中一个登录。

如果我将日志记录添加到我的身份验证器,我会看到我在两种情况下都使用正确的用户访问了 onAuthorizationSuccess 函数,但是如果我在 TEST 或 PROD 上,我看到的页面又是登录页面。如果我在环境之间切换,我可以随时复制该行为:dev ok,test 和 prod 不会从其中一个提供商的登录页面传递。另一个在所有情况下都可以。

我知道 Symfony 在 dev 上的工作方式与 test 或 prod 不同,但我无法弄清楚有什么区别。

日志上没有错误,我有缓存:清除几次..

有什么办法可以调试这种行为?


如果我在 DEV 或 TEST/PROD 环境中,行为会完全改变。测试环境使用 .env.dev 的 .env.test 副本,因此它不应该影响结果。

如果我将 .env 更改为使用 DEV 并清理缓存,它可以工作:两种类型的用户可以登录,如果我将 .env 更改为使用 TEST 并再次清理缓存,它就不起作用了......

我的 security.yaml(相关部分):

security:
    chain_provider:
        chain:
            providers: [app_user_provider, sec_user_provider]
    app_user_provider:
        entity:
            class: App\Entity\WebUser
            property: login
    sec_user_provider:
        entity:
            class: App\Entity\Security\User
            property: login
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: lazy
            provider: chain_provider
            guard:
                authenticators:
                    - App\Security\BasicAuthenticator
            logout:
                path: app_logout

标签: symfonysecurityauthenticationenvironment

解决方案


推荐阅读