5

Symfony 4.3 弃用了 bcrypt 算法,参见UPGRADE-4.3.md

使用 argon2i 或 bcrypt 作为算法配置编码器已被弃用,请改用 auto。

所以我将 security.yaml 更改为:

encoders:
    App\Entity\User:
        algorithm: auto

问题是,更改为自动后,散列字符串更长:

'INSERT INTO users (..., password, ...) VALUES (...)' with params [..., "$argon2id$v=19$m=65536,t=6,p=1$d2RhZjVuaWJsSnE0TW5haA $ycOn7EHjPOoBTSa6SHDOBWL2AvwfPNjAstlSTEMmPpU", ...]:

SQLSTATE [22001]:字符串数据,右截断:1406 第 1 行的列“密码”数据太长

这个字符串有 97 个字符长,而我的密码列是 64。我没有找到任何关于“auto”属性的最大可能长度的文档,是 97 吗?或者可以更多?

4

1 回答 1

5

正如@Cerad 在评论中所说,该auto模式可能总是会生成password_hash()内置 PHP 函数支持的密码(取决于平台)。
因此,您可以放心地依赖password_hash() 文档给出的提示:

PASSWORD_DEFAULT - [...] 请注意,此常量旨在随着 PHP 中添加新的和更强大的算法而随时间而变化。因此,使用此标识符的结果长度可能会随时间而变化。因此,建议将结果存储在可以扩展超过 60 个字符的数据库列中(255 个字符是一个不错的选择)。

于 2019-05-31T11:48:43.203 回答