【发布时间】:2017-04-01 16:19:23
【问题描述】:
在阅读https://symfony.com/doc/current/security/custom_provider.html#create-a-user-class/ 时,我看到的所有示例都为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
【问题讨论】:
标签: php symfony bcrypt symfony-security symfony-3.1