CakePHPで入力パスワードが正しいパスワードかを確認する : CakePHP

Pocket

ハッシュ化して保存しているパスワードと入力パスワードが等しいか確認する。

SimplePasswordHasherは3.0で削除されるのでBlowfishPasswordHasherを使う。記事のSimplePasswordHasherはBlowfishPasswordHasherに読み替えてください(追記 2015.04.01)。

BlowfishPasswordHasherはSimplePasswordHasherより強いハッシュアルゴリズム(bcrypt) を使い、 ユーザーソルトごとに提供します。SimplePasswordHasherはCakePHP version 3.0で削除されます。

シンプルな認証と承認のアプリケーション — CakePHP Cookbook 2.x ドキュメント

ハッシュ値取得

App::uses( 'SimplePasswordHasher', 'Controller/Component/Auth' );

class User extends AppModel {
    .....
    .....
    public function getPasswordHash( $value ) {
        $passwordHasher = new SimplePasswordHasher();
        return $passwordHasher->hash( $value );

    }
}

パスワード確認

// パスワード取得
public function getPasswordById($id) {
    $user = $this->find('first', array(
        'conditions' => array('User.id' => $id),
         'fields' => 'password'
    ));
    return $user['User']['password'];
}

【CakePHP】BlowfishPasswordHasherで作成したハッシュパスと入力された平文パスが一致するか調べる – プログラムは、用いる言葉の選択で決まる

// 入力パスワードと等しいか確認
$pass = $this->getPasswordById($user[ 'id' ] ); 
$inputpass = $this->User->getPasswordHash($this->request->data['User']['password']);
if ($pass !== $inputpass ) {
    // 等しくない
}

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。