auth機能を使って、管理画面を作る。

モデル

[User]

App::uses('AppModel', 'Model');
App::uses('AuthComponent', 'Controller/Component'); // コンポーネントを追加

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

コントローラー

[AppController]

    public $components = array(
            'Session',
            'Auth' => array(
                'authenticate' => array(
                    'Form' => array(
                        'userModel' => 'Member', //ユーザー情報のモデル
                        'fields' => array('username' => 'email') //認証をusernameからemailカラムに変更
                    )
                ),
                'loginAction' => array('controller' => 'pages','action' => 'login'), //ログインを行なうaction
                'loginRedirect' => array('controller' => 'pages', 'action' => 'index'), //ログイン後のページ
                'logoutRedirect' => array('controller' => 'pages', 'action' => 'index') //ログアウト後のページ
            )
        );

[UserController]

public function beforeFilter()
    {
        $this->layout = 'admin';
        $this->Auth->allow('add', 'login');
    }
public function login() {
        if($this->request->is('post')) {
            if($this->Auth->login()) {
                return $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
            }
        }
    }
 
    public function logout($id = null)
    {
        $this->redirect($this->Auth->logout());
    }

ビュー

[login.ctp]

test