如何从数据库(实体提供程序)加载安全用户

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何从数据库(实体提供程序)加载安全用户

应用程序中的每个User类通常都需要它自己的类用户提供者.如果从数据库加载用户,则可以使用内置的实体供应商:

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12 13
#配置/包/ security.yaml#……提供者:our_db_provider:实体:类:应用实体\ \用户#要查询的属性,例如用户名,电子邮件等属性:用户名#如果你使用多个实体管理器# manager_name:客户#……

供应商节创建名为our_db_provider那就知道从你那里询问了应用实体\ \用户实体用户名财产。这个名字our_db_provider不重要:不使用它,除非您有多个用户提供程序,并且需要通过提供者防火墙下的密钥。

使用自定义查询加载用户

实体提供者只能查询一个具体的属性指定的财产配置的关键。如果你想在这方面有更多的控制-例如,你想通过电子邮件用户名,你可以通过使你的UserRepository执行一个特殊的UserLoaderInterface.该接口只需要一个方法:loadUserByUsername(用户名)

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ / src /仓库/ UserRepository.php名称空间应用程序\存储库;使用ob娱乐下载\\学说\安全\用户\UserLoaderInterface;使用学说\ORM\EntityRepository;UserRepository扩展EntityRepository实现了UserLoaderInterface公共函数loadUserByUsername用户名返回->createQueryBuilder (“u”->(在哪里'u.username =:用户名或u.email =:邮箱'->setParameter (“用户名”用户名->setParameter (“电子邮件”用户名->getQuery ()->getOneOrNullResult ();}}

要完成这一步,移除财产中的用户提供程序中的键security.yaml

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
#配置/包/ security.yaml安全:#……提供者:our_db_provider:实体:类:应用实体\ \用户

这告诉Symfonyob娱乐下载自动查询用户。相反,在需要的时候(例如,因为switch_userremember_me或其他安全特性被激活),则loadUserByUsername ()方法UserRepository将被调用。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。