这个用户提供者知道如何(重新)从一个存储加载用户(例如,数据库)基于“用户标识符”(如用户的电子邮件地址或用户名)。上面的配置使用原则来加载用户实体使用电子邮件属性为“用户标识符”。

用户在几个地方使用提供者在安全生命周期:

加载用户基于一个标识符
在登录(或任何其他身份验证),提供商加载用户基于用户标识符。一些其他特性,比如<一个href=”//www.oldmanjams.com/doc/current/security/security/impersonating_user.html" class="reference internal">用户模拟和<一个href=”//www.oldmanjams.com/doc/current/security/security/remember_me.html" class="reference internal">记得我也用这个。
重新加载用户的会话
在每个请求的开始,从会话用户加载(除非你的防火墙无状态的)。提供者“刷新”用户(例如数据库查询了最新数据),以确保所有用户的信息是最新的(如果必要,用户de-authenticated /记录如果有改变)。看到<一个href=”//www.oldmanjams.com/doc/current/security/security.html" class="reference internal">安全关于这个过程的更多信息。

欧宝娱乐app下载地址Symfony提供了几个内置的用户提供者:

实体用户提供者< /dt>
从数据库加载用户使用<一个href=”//www.oldmanjams.com/doc/current/security/doctrine.html" class="reference internal">学说;
LDAP用户提供者< /dt>
从LDAP服务器加载用户;
记忆用户提供者< /dt>
加载用户配置文件;
链用户提供者< /dt>
合并两个或两个以上的用户提供一个新的用户提供者。因为每个防火墙完全一个用户提供者,您可以使用此链多个提供者在一起。

内置的用户提供涵盖最常见的应用程序需求,但是你还可以创建自己的<一个href=”//www.oldmanjams.com/doc/current/security/security/user_providers.html" class="reference internal">定制用户提供者

请注意

有时,您需要将用户提供者在另一个类(例如,在您的自定义身份验证)。所有用户提供者遵循这种模式的服务ID:security.user.provider.concrete。< your-provider-name >(< your-provider-name >配置是关键。app_user_provider)。如果你只有一个用户提供者,您可以使用自动装配<一个href=”https://github.com/symfony/symfony/blob/6.3/src/Symfony/Component/Security/Core/User/UserProviderInterface.php" class="reference external" title="UserProviderInterface”rel="external noopener noreferrer" target="_blank">UserProviderInterface类型- - - - - -hint。

< /div>

然后,配置哪些密码侍者应该用于这类。如果你的security.yaml文件不是已经预先配置,然后:用户你应该这样做:

1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……password_hashers:#使用本机密码切肉机,自动选择和迁移最好的#可能散列算法(目前是“bcrypt”)欧宝娱乐app下载地址Symfony \ \安全\ \用户\ PasswordAuthenticatedUserInterface核心组件:“汽车”