CakePHPのauth.phpでパスワードの認証ができない

Usersテーブルにusernameとpasswordを入れて、
チュートリアルにある簡単な認証画面でテストしたのですが、
どうしても認証できません。

データベースはMySQLを使用して、select md5(‘password’) で取得した値を
passwordに入れていました。

デバッグしてみると、auth.phpでSecurity.saltで設定している
ランダムの値が使用されていました・・・。
Security.saltの値プラス、フォームのpasswordの値をmd5に変換していたのです。

対応策は、事前に登録する値はselect md5(‘Security.saltの値password’)
で登録するか、Cakeでaddするか、以下のように修正するかのようです。

Securityコンポーネントでは、saltを使用するかをtrueかfalseで設定できますが、
肝心の呼び出し元であるauthコンポーネントではtrue固定となっていました。

1
2
3
4
5
6
7
8
9
10
11
12
13
auth.php
/**
 * Hash a password with the application's salt value (as defined with Configure::write('Security.salt');
 *
 * @param string $password Password to hash
 * @return string Hashed password
 * @access public
 */
    function password($password) {
        //return Security::hash($password, null, true);
        return Security::hash($password, null, false);
    }

これだけで相当はまりました・・・ :x001:

タイトルとURLをコピーしました