CakePHPはデフォルトだとコントローラと物理データベーステーブルのネーミングがある。例えばAdminControllerだと物理テーブル名をAdminsにしないといけない。
Authモジュールでモデル名を変更するには、Auth->userModelに利用します。AuthモジュールはデフォルトUsersテーブルを参照するようになっています。あと、cakePHPで生成されるmd5ハッシュ文字がMySQLで出力されるselect md5(‘test’)の結果と違うように思われる。
class AdminController extends AppController {
public $name = 'Admin';
public $uses = array('AdminTbl');
public $components = array('Auth');
function beforeFilter(){
Security::setHash('md5');
$this->Auth->authError = 'あなたはログインしていません。';
$this->Auth->userModel = 'AdminTbl';
$this->Auth->fields = array(
'username'=>'customer_id',
'password'=>'password'
);
//アクセス制限しないアクション
$this->Auth->allow('login');
//ログイン後の遷移先を固定
$this->Auth->loginRedirect = array('controller' => 'program', 'action' => 'index');
}
モデルに$useTable を設定する必要がある。
class AdminTbl extends AppModel {
var $name = 'AdminTbl';
var $useTable = 'admin_tbl';
var $primaryKey = 'customer_id';
}