如何使用多个Guard认证器

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.2,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

如何使用多个Guard认证器

Guard身份验证组件允许您同时使用许多不同的身份验证器。

入口点是(您的一个身份验证者的)服务id,它start ()方法启动身份验证过程。

具有共享入口点的多个身份验证器

有时,您希望为用户提供不同的身份验证机制,如表单登录和Facebook登录,而两个入口点都将用户重定向到相同的登录页面。但是,在您的配置中,您必须显式地说明要使用哪个入口点。

这是你的安全配置的实际效果:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11
#配置/包/ security.yaml安全:#……防火墙:默认值:匿名:警卫:身份验证器:-App \安全\ LoginFormAuthenticator-App \安全\ FacebookConnectAuthenticatorentry_point:App \安全\ LoginFormAuthenticator

这种方法有一个限制——你只能使用一个入口点。

具有独立入口点的多个身份验证器

但是,在某些用例中,您可以使用身份验证器来保护应用程序的不同部分。例如,您有一个登录表单,它保护应用程序前端的安全区域,以及使用API令牌保护的API端点。由于每个防火墙只能配置一个入口点,解决方案是将配置拆分为两个独立的防火墙:

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#配置/包/ security.yaml安全:#……防火墙:api:模式:^ / api /警卫:身份验证器:-App \安全\ ApiTokenAuthenticator默认值:匿名:警卫:身份验证器:-App \安全\ LoginFormAuthenticatoraccess_control:-路径:^ /登录,角色:IS_AUTHENTICATED_ANONYMOUSLY-路径:^ / api,角色:ROLE_API_USER-路径:^ /,角色:ROLE_USER
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。