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

Symfony 3 custom user provider using Bcrypt

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

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

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

链接文档说:

If getSalt() returns nothing, then the submitted password is simply encoded using the algorithm you specify in security.yml. If a salt is specified, then the following value is created and then hashed ...

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

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

我的上述假设是否正确?如果不是,我如何实现使用 bcrypt 散列密码的用户提供程序?

我正在使用 Symfony 3.1.6

Creating your First User所述:

Do you need to use a Salt property?

If you use bcrypt, no. Otherwise, yes. All passwords must be hashed with a salt, but bcrypt does this internally. Since this tutorial does use bcrypt, the getSalt() method in User can just return null (it's not used). If you use a different algorithm, you'll need to uncomment the salt lines in the User entity and add a persisted salt property.

如果你只想在 getSalt() 方法中使用 Bcrypt return null