如何从数据库(实体提供程序)加载安全用户
编辑本页警告:您正在浏览的文档欧宝官网下载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_user
,remember_me
或其他安全特性被激活),则loadUserByUsername ()
方法UserRepository
将被调用。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。