暇人じゃない

CakePHP の Auth コンポーネントを使用するログイン URL を変更する

ここで使用している CakePHP のバージョンは 1.3.3 です。 2010/8/31 21:00 追記:内容に不備があったので書き加えました。

CakePHP の Auth コンポーネントを使用するログイン URL は、デフォルトの場合だと http://hogehoge/users/login になっていると思います。

これを、 http://hogehoge/admin/users/login に変更する方法。

  1. admin を true に。 controller や action を変更すれば任意のコントローラー名/アクション名にすることができます。 controller と action は変更しない場合でも記述してください。
// app_controller.php
class AppController extends Controller {
    var $components = array(
            'Auth' => array(
                'loginAction' => array(
                    'controller' => 'users',
                    'action' => 'login',
                    'admin' => true
                )
            )
    );
}
  1. users コントローラーの login/logout をそれぞれ、adminlogin/adminlogout に変更。
// controllers/users_controller.php
class UsersController extends AppController {
    function admin_login() {

    }

    function admin_logout() {
        $this->redirect($this->Auth->logout());
    }

  1. admin ルーティングを有効にする。
// config/core.php
// コメントアウトを外す
Configure::write('Routing.prefixes', array('admin'));
  1. ビューのログインフォームを views/users/admin_login.ctp というファイル名で作成。

これで http://hogehoge/admin/users/login という URL でログイン画面が表示されるようになるはずです。


logout を変更したい場合は好きなアクション名にして

function signout() {
    $this->redirect($this->Auth->logout());
}

みたいに $this->Auth-logout() にリダイレクトさせるだけですね。

参考: Setting Auth Component Variables :: Authentication :: Core Components :: The Manual :: 1.3 Collection :: The Cookbook http://book.cakephp.org/view/1251/Setting-Auth-Component-Variables

The Cookbook は日本語版と英語版で差がありますね… 仕方がないか…