CakePHP2.6でAuthComponentのハッシュを無効にする方法

今月は、12年ほど前にスクラッチで開発した会員制サイトをCakePHPベースにリニューアルする作業を進めています。
CakePHPのインストールや諸々の設定が完了し、旧データベースから会員テーブルを移植してAuthComponentで認証処理を実装したところ、パスワードが平文で登録されているためにログインできない状態になってしまいました。

以前も同じパターンでハマったことがあったので今回もおそらくハッシュ関連ではないかということで、パスワードの取り扱いのハッシュ化を無効にしてみました。

まずは、app/Controller/Component/Auth ディレクトリに lib/Cake/Controller/Component/Auth/AbstractPasswordHasher.php を継承して暗号化の処理を外した NonePasswordHasher クラスを作成します。

<?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;
	}
}

AppController または Authコンポーネントを使用するコントローラーで passwordHasher の className を None に設定します。

<?php

class UsersController extends AppController {
	public $components = array(
		'Auth' => array(
			'authenticate' => array(
				'Form' => array(
					'passwordHasher' => array(
						'className' => 'None'
					),
				),
			),
		),
	);

これでとりあえず平文のパスワードで認証できるようになりました。
このまま暗号化しないパスワードで運用するのは問題があるので、急場しのぎの対応方法です。
この後、データベースに登録済みのパスワードをハッシュ化する方法を考えなくては。。。

参考サイト:Cookbook 2.x:カスタムパスワードハッシュ化クラスの作成


おすすめiPhone/iPadアプリ

1分程度でサクッと遊べるトランプの無料アプリです。
簡単な足し算を繰り返すことで、脳トレ効果も期待できます。
通勤・通学の時間つぶしにどうぞ!


Tweet about this on TwitterShare on Facebook4Share on Google+0Pin on Pinterest0

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です