3
我试图在Yii中实现phpass认证,但每次都失败。我一直在阅读很多SO文章,还没有找到解决方案,所以我认为这必须是Yii的特定问题。phi认证在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')
我检查,以确保哈希密码是不是在插入数据库截断,这是不...我已经调整了我的密码字段为varchar 60
按照另一个SO文章,并没有帮助...
编辑:似乎如果我手动将哈希粘贴到数据库字段,身份验证后生成它通过:
echo $phpass->HashPassword('password');
你是对的''beforeSave'是问题,我把它包装在'$ this-> scenario =='register''中,现在它完美地工作了 – keeg
对这种情况使用场景的好主意 – 2013-02-05 20:56:59