如何使用不同的密码编码器算法每个用户

编辑本页

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

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

如何使用不同的密码编码器算法每个用户

通常,通过将相同的密码编码器配置为应用于特定类的所有实例,所有用户都会使用相同的密码编码器:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……编码器:应用实体\ \用户:算法:bcrypt成本:12

另一种选择是使用“命名”编码器,然后选择您想动态使用的编码器。

在前面的示例中,您已经设置了bcrypt算法应用实体\ \用户.对于普通用户来说,这可能已经足够安全了,但如果您希望管理员拥有更强大的算法呢bcrypt成本更高。这可以通过命名编码器来完成:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
#配置/包/ security.yaml安全:#……编码器:严厉的:算法:bcrypt成本:15

请注意

如果您运行的是PHP 7.2+或libsodium扩展安装,那么推荐使用的哈希算法是Argon2i

这将创建一个名为严厉的.为了得到a用户实例要使用它,类必须实现EncoderAwareInterface.该接口只需要一个方法-getEncoderName ()-返回要使用的编码器的名称:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src / Acme / / User.php UserBundle /实体名称空间AcmeUserBundle实体使用ob娱乐下载组件安全核心用户用户界面使用ob娱乐下载组件安全核心编码器EncoderAwareInterface用户实现了用户界面EncoderAwareInterface公共函数getEncoderName()如果->isAdmin ()) {返回“苛刻”;}返回//使用默认编码器}}

如果您创建了自己的密码编码器实现PasswordEncoderInterface,你必须为它注册一个服务,以便使用它作为命名编码器:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/包/ security.yaml安全:#……编码器:app_encoder:id:“App \安全\编码器\ MyCustomPasswordEncoder”

这将创建一个名为app_encoder从具有ID的服务App \安全\ \ MyCustomPasswordEncoder编码器

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