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