繁体   English   中英

使用Bcrypt的Symfony 3自定义用户提供程序

[英]Symfony 3 custom user provider using Bcrypt

在阅读https://symfony.com/doc/current/security/custom_provider.html#create-a-user-class/时 ,我看到的所有示例都实现了Symfony\\Component\\Security\\Core\\User\\UserInterface User类的Symfony\\Component\\Security\\Core\\User\\UserInterface 该接口定义了一个用于盐场的方法-但我想将Bcrypt用于哈希算法。

在我的app/config/security.yml文件中,我有:

encoders:
    AppBundle\Security\User\WebserviceUser:
        algorithm: bcrypt
        cost: 12

链接的文件说:

如果getSalt()不返回任何内容,则使用您在security.yml中指定的算法对提交的密码进行简单编码。 如果指定了盐,则将创建以下值,然后将其散列...

这是否意味着如果我指定要使用Bcrypt,那么在用户数据库表中就不需要盐字段(因为在用Bcrypt散列时盐与密码的其余部分位于同一字符串中)?

如果是这种情况,那么我猜我可以将getSalt()方法留空,这样就不会指定盐,而将使用security.yml中的算法。

我的上述假设正确吗? 如果不是,我该如何使用bcrypt哈希密码来实现用户提供程序?

我正在使用Symfony 3.1.6

创建您的第一个用户所述

您需要使用Salt属性吗?

如果使用bcrypt,则不会。 否则,是的。 所有密码都必须用一个盐进行哈希处理,但是bcrypt在内部执行此操作。 由于本教程确实使用bcrypt,因此getSalt()方法只能return null (不使用)。 如果使用其他算法,则需要在用户实体中取消注释盐线,并添加一个持久化的盐属性。

如果要使用Bcrypt,只需在getSalt()方法中return null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM