Symfony fos_user Laravel 中的捆绑编码密码 - Symfony to Laravel Migr



我们正在将我们的一个应用程序从Symfony 3.3迁移到Laravel 5.5,我们希望使用所有现有用户而无需更改密码。

在Symfony应用程序中,我们使用FOSUserBundle对密码进行编码。

providers:
fos_userbundle:
id: fos_user.user_provider.username_email
encoders:
FOSUserBundleModelUserInterface: sha512

试图弄清楚我们如何在 Laravel 中使用相同的算法。

试过,password_verify

password_verify($raw, $encoded)

但不起作用。任何想法都会非常有帮助。

试试这个:

$raw = 'qwerty12345';
$salt = 'salt'; // $user->getSalt() users salt field
if (empty($salt)) {
$salted = $raw;
} else {
$salted = $raw.'{'.$salt.'}';
}
$digest = hash('sha512', $salted, true);
for ($i = 1; $i < 5000; ++$i) {
$digest = hash('sha512', $digest.$salted, true);
}
$encoded = base64_encode($digest);
echo hash_equals($encoded, %password_from_db%);

密码经过多次哈希处理,迭代次数以SecurityBundle为单位设置。所有参数均可通过命令./bin/console debug:config SecurityBundleencoders部分获得:

FOSUserBundleModelUserInterface:
algorithm: sha512
hash_algorithm: sha512
key_length: 40
ignore_case: false
encode_as_base64: true
iterations: 5000
cost: 13

这种情况的密码编码代码可以从 https://github.com/symfony/symfony/blob/3.2/src/Symfony/Component/Security/Core/Encoder/MessageDigestPasswordEncoder.php

最新更新