Symfony / FOSuserBundle:盐是否为空?

Pao*_*o75 1 symfony fosuserbundle symfony-3.4

我正在使用 :

  • Symfony的3.4
  • FOSUserBundle 2

FOSuserbundle安装得很好,并且就像一个护身符。我注意到在数据库中的用户表中,“盐”列始终为空:

在此处输入图片说明

以下是我的security.yml文件的摘录:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt
Run Code Online (Sandbox Code Playgroud)

为了记录,我添加了2个用户,并添加了命令“ fos:user:create”。

这正常吗?

Yos*_*shi 5

是的,这是正常的,因为使用bcrypt盐时,哈希密码中包含盐。

参考:https : //php.net/manual/password.constants.php#constant.password-bcrypt

(字符串)-在哈希密码时手动提供盐。请注意,这将覆盖并防止盐自动生成。

如果省略,password_hash()将为散列的每个密码生成随机盐。这是预期的操作模式,自PHP 7.0.0起,salt选项已弃用。


您可以在源代码中看到该行为:

// FOSUserBundle/Util/PasswordUpdater.php [Line 43]

if ($encoder instanceof BCryptPasswordEncoder) {
    $user->setSalt(null);
}
Run Code Online (Sandbox Code Playgroud)