Symfony:从与当前请求中使用的防火墙不同的防火墙检索用户



我有一个使用2个防火墙的Symfony应用程序。我已在同一会话中登录了这两个。当我访问后端防火墙页面时,我可以访问用户提供程序对象(在我的情况下是Admin实体(,但我不知道如何从后端路由(在本例中是Customer实体(访问前端防火墙的用户提供程序。

一个用例的例子如下——我构建了一个CMS风格的应用程序,并以和ADMIN的身份登录到后端,以完成与网站前端相关的特定页面上的一些工作。然后,我切换到网站的前端,以客户身份登录以测试我的工作(注意:在这个阶段,我实际上仍然登录到网站的后端,但因为我没有使用"^/admin"路由,它会返回给我客户用户提供商(。现在,从这个前端页面,我想获得登录到网站后端的ADMIN实体,这样我就可以在我仍然以客户身份登录时检查是否可以在页面上完成一些前端页面编辑。

我的防火墙如下所示:

security:
firewalls:
backend:
pattern: ^/admin
anonymous: lazy
provider: backend_user_provider
guard:
authenticators:
- AppSecurityBackendAuthenticator
logout:
path: backend_logout
frontend:
anonymous: lazy
provider: frontend_user_provider
guard:
authenticators:
- AppSecurityFrontendAuthenticator
logout:
path: frontend_logout

我在网上找不到任何东西来解释如何做到这一点。我发现了以下信息,但没有一个与我想要的有关:

  • 通过程序验证到不同的防火墙
  • 共享上下文

这不是使用防火墙的正确方法。

在这种情况下,您只需要使用一个防火墙,就不会有任何问题。

根据文档,您可以在防火墙之间共享身份验证:

我可以在防火墙之间共享身份验证吗可以,但仅限于某些配置。如果您使用多个防火墙,并且通过一个防火墙进行身份验证,则不会自动通过任何其他防火墙的身份验证。不同的防火墙就像不同的安全系统。为此,您必须为不同的防火墙显式指定相同的防火墙上下文。但通常对于大多数应用程序来说,拥有一个主防火墙就足够了。

最新更新