ここから本文です

baserCMS開発ブログ

CakePHP2.4 AuthComponent利用時にパスワードを暗号化させない方法

CakePHP

こんにちわ、Billyです。
今回はbaserCMSではないのですが、CakePHP2.4を使って開発している時に、
ちょっと困ったけど、解決したことがあったので記事にしました。

CakePHPでAuthComponentを利用すると、パスワードを暗号化してくれるのですが、
これが、仕様的にいらない、という事がありました。
(DBに平文でパスワード保存とかって、仕様的にどうなのか、というのはこの際置いておいて。)

CakePHP1系の頃にも対応したことがあったので楽勝、とか思ってたら、
CakePHP2で色々変わっていてちょっと時間がかかってしまいました。
CakePHP2.xの記事もいくつかあったのですが、CakePHP2.4では更に変わっていたという…。

 

前置きが長くなりましたが、
AuthComponent 利用時にパスワードを暗号化させない方法ですが、
CakePHP2.4ではパスワードのチェックにpasswordHasher というパスワードハッシュ化クラスを使うようです。
lib/Cake/Controller/Component/Auth/AbstractPasswordHasher.php を
app/Controller/Component/Auth/NonePasswordHasher.php などとしてコピーして
暗号化する処理を省けば良い、ということのようです。


app/Controller/Component/Auth/NonePasswordHasher.php

<?php
App::uses('AbstractPasswordHasher', 'Controller/Component/Auth');

class NonePasswordHasher extends AbstractPasswordHasher {

    protected $_config = array('hashType' => null);
    public function hash($password) {
        return $password;
    }
    public function check($password, $hashedPassword) {
        return $hashedPassword === $password;
    }
}


app/Controller/Component/Auth/NonePasswordHasher.php

<?php
class AppController extends Controller {

            :

    public $components = array(
        'Auth' => array(
                    :
            'authenticate' => array(
                'Form' => array(
                    'passwordHasher' => array(
                        'className' => 'None'
                    )
                )
            ),
                    :


app/Model/User.php とかのbeforeSaveでパスワードを暗号化して保存する処理は、当然コメントするなりして外しておきましょう。

public function beforeSave($options = array()) {
//    if (isset($this->data[$this->alias]['password'])) {
//        $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
//    }
    return true;
}


ネット上には、まだまだCakePHP1系の記事と2系の記事がごちゃごちゃに出てくるし、
最新のCakePHP2.4の情報がまだまだ少ない感じでしたので、お役に立てれば、と思い記事にしました。

次期リリースの baserCMS3系 は CakePHP2を採用していますので、何かの役に立てれば!


参考:

パスワードのハッシュ化
http://book.cakephp.org/2.0/ja/core-libraries/components/authentication.html#hashing-passwords

カスタムパスワードハッシュ化クラスの作成
http://book.cakephp.org/2.0/ja/core-libraries/components/authentication.html#id14

シンプルな認証と承認のアプリケーション
http://book.cakephp.org/2.0/ja/tutorials-and-examples/blog-auth-example/auth.html

開発 2013/11/13 Johnny
baserCMS最新版ダウンロード

ダウンロード数: ...

最新バーション: ...

Google グループグループ
baserCMSユーザー会
baserCMSの最新情報を随時配信中!
メーリングリストに参加
[Eメール]
8月 2017年9月 10月
     12
3456789
10111213141516
17181920212223
24252627282930