Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Yii2-如何正确使用generatePasswordHash()?_Security_Hash_Yii2 - Fatal编程技术网

Security Yii2-如何正确使用generatePasswordHash()?

Security Yii2-如何正确使用generatePasswordHash()?,security,hash,yii2,Security,Hash,Yii2,我正在尝试为Yii2应用程序中的用户生成随机密码 我有以下代码: $rand_password = Yii::$app->security->generateRandomString(8); $user->password = Yii::$app->security->generatePasswordHash($rand_password); 之后,我保存$user模型,散列字符串也保存在数据库中。但是,由于收到无效密码错误消息,因此在此之后无法使用$rand_p

我正在尝试为Yii2应用程序中的用户生成随机密码

我有以下代码:

$rand_password = Yii::$app->security->generateRandomString(8);
$user->password = Yii::$app->security->generatePasswordHash($rand_password);
之后,我保存
$user
模型,散列字符串也保存在数据库中。但是,由于收到无效密码错误消息,因此在此之后无法使用
$rand_password
字符串登录


generatePasswordHash
description说明该散列是根据提供的密码和随机salt字符串生成的。事实上,我连续几次使用相同的密码字符串调用函数,每次都得到不同的结果。所以我的问题是,如果salt字符串是随机的并且每次都不同,那么我怎么能使用这个函数来验证密码呢?当我尝试登录时,我使用用户提供的密码字符串调用相同的函数,但这次salt将不同,因此我无法生成与以前相同的哈希?我在这里遗漏了什么?

好吧,经过数小时的调试和寻找资源和解释,我正在使用的用户模块实际上是在将密码保存到数据库之前自动对密码进行哈希运算。换句话说,只要你打电话:

$user->password = SOMETHING;
保存时,
某物
会自动通过
generatePasswordHash()
函数。我的问题是,我把它也放在了我的代码中,所以基本上密码被散列了两次