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')
ハッシュされたパスワードが挿入時にデータベースで切り捨てられていないことを確認しましたが、そうではありません...varchar 60
別のSOの記事に従って、パスワードフィールドを調整しましたが、役に立ちませんでした...
編集:手動でハッシュをデータベースフィールドに貼り付けると、認証は次の方法で生成された後に機能するようです:
echo $phpass->HashPassword('password');