在阅读https://symfony.com/doc/current/security/custom_provider.html#create-a-user-class/时,我见过的所有示例都为User
类实现了Symfony\Component\Security\Core\User\UserInterface
。这个接口定义了一个salt字段的方法 - 但我想要使用Bcrypt作为哈希算法。使用Bcrypt的Symfony 3自定义用户提供程序
在我app/config/security.yml
文件我有:
encoders:
AppBundle\Security\User\WebserviceUser:
algorithm: bcrypt
cost: 12
链接的文件说:
如果getSalt()返回任何内容,然后提交密码只需使用算法进行编码你在安全指定.yml。如果指定了盐,则创建以下值,然后进行哈希处理...
这是否意味着如果我指定要使用Bcrypt,那么我不需要用户数据库中的盐字段表(因为salt与Bcrypt散列时密码的其余部分在同一个字符串中)?
如果是这种情况,那么我猜我可以将getSalt()
方法留为空体,这样就不会指定salt,并且将使用security.yml中的算法。
我的上述假设是否正确?如果它们不是,我如何实现一个用户提供者,使用bcrypt来散列密码?
我使用的Symfony 3.1.6
这真的帮了我。我正在创建一个自定义的UserProvider,并且定义了我自己的User类,因为我使用了Doctrine不支持的数据库。两者似乎都希望我的密码与散列密码分开。 –