在閱讀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不支持的數據庫。兩者似乎都希望我的密碼與散列密碼分開。 –