我有一个问题。我有一个迁移文件,那批插入一个管理员用户和一个普通用户到一个数据库。现在我已经准备好了文件,他们的工作很好。但是,在插入Yii1.1的时候,密码有一个md5哈希,类似于:'password'=>md5('admin')
我的问题是,我能在Yii 2中用bcrypt做一些类似的事情吗?在创建过程中我对密码进行加密?我使用batchInsert('users', ['column1', 'column2' ...], ['Jon', 'Doe' ...], ['Jane', 'Doe'...])
任何帮助都将不胜感激!
1条答案
按热度按时间uelo1irk1#
在Yii2中正确的散列密码方法是使用
yii\base\Security::generatePasswordHash()
。这个方法使用password_hash()
函数和PASSWORD_DEFAULT
常量作为算法。我认为目前这个常量仍然指的是bcrypt算法。但它是为了适应未来的需要。当PHP转向另一种算法时,你不需要改变你的代码。如果password_hash()
函数不可用,则generatePasswordHash()
方法回退到crypt()
函数。在迁移过程中,您可以像在其他任何地方一样使用应用程序组件。例如:
或者,如果您更喜欢依赖注入方法:
若要根据
generatePasswordHash()
创建的哈希值验证密码,您可以用相同的方法调用yii\base\Security::validatePassword()
方法。例如: