gpt4 book ai didi

Yii 中的 phpass 身份验证失败

转载 作者:搜寻专家 更新时间:2023-10-31 20:44:38 26 4
gpt4 key购买 nike

我正在尝试在 Yii 中实现 phpass 身份验证,但每次都失败。我已经阅读了很多 SO 文章,但还没有找到解决方案,所以我认为这一定是 Yii 特有的问题。

我在 User.php 中保存散列密码:

public function beforeSave() {
$phpass = new PasswordHash(8, false);
$hash = $phpass->HashPassword($this->user_pass);
$this->user_pass = $hash;
return true;
}

在 UserIdentity 中,我正在检查密码:

public static function isPasswordValid($plainPass, $hashedPass) {
$phpass = new PasswordHash(8, false);
$isValid = $phpass->CheckPassword($plainPass, $hashedPass);


if($isValid){
return true;
}

return false;
}

$hashedPass 从数据库中出来,plainPass 是用户刚输入表单的内容,但是 $isValid 一直返回 false .事实上,我从数据库中提取了散列密码并手动应用它,但它仍然失败:

$isValid = $phpass->CheckPassword('password', '$2a$08$P9X8duz7S8LOysz1XIn3fe/YYW3dwAs2busSBIX/QnZhKH/R9/H1S')

我已经检查以确保哈希密码在插入时没有在数据库中被截断并且它不是......我已经根据另一篇 SO 文章将我的密码字段调整为 varchar 60 并且这没有帮助...

编辑:似乎如果我手动将散列粘贴到数据库字段中,则身份验证会在通过以下方式生成后起作用:

echo $phpass->HashPassword('password');

最佳答案

问题可能出在beforeSave。保存用户时,您对 user_pass 进行哈希处理。如果您保存用户两次,您的密码将被散列两次,因此无用。

我将 phpass 与 yii 一起使用没有问题,但是我只对用户手动设置的密码进行哈希处理。

仅当用户修改/设置密码时才尝试散列密码。

关于Yii 中的 phpass 身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com