CakePHPでBasic認証

こんばんわ。

はじめましてiyamaです。 今日からこのblogに参加します。 主にPHPやActionScript系のネタを載せていくと思います。 これからどうぞよろしくお願いします♪

CakePHPで作ったサイトの管理者ページに簡単に認証を付ける場合、以下のサイトにあるコンポーネントを使うことがあること思います。 CakePHP 管理者サイトでBasic認証を簡単に行うコンポーネント

ですが、このコンポーネントはCakePHP1.2向けなので、CakePHP1.3で使用する場合、そのままでは使えません。 そこで1.3対応にコードを足してみたので覚え書き。

そもそも、なんで1.3で使えなくなったのかというと、Prefixの扱いが1.2と1.3では変わってしまったからです。 1.3のPrefixは以下のように設定します。

app/config/core.php
1
Configure::write('Routing.prefixes', array('admin'));

そーです。 Prefixが配列で指定できるようになったのです。 なので、AdminAuthコンポーネントのPrefixのチェックのところを変数から配列で確認するだけです。

admin_auth.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function startup(&$controller) {
    // Prefix Routingを使用した場合 (CakePHP1.3用)
    $isAdmin = false;
      foreach (Configure::read('Routing.prefixes') as $id => $value) {
        if (!preg_match("/^" . $value  . "_/i", $controller->action)) {
            $isAdmin = true;
        }
      }
    if ($isAdmin) {
        return;
    }

/*
    // AdminのRoutingを使用した場合 (CakePHP1.2用)
    if (!preg_match("/^" . Configure::read('Routing.admin')  . "_/i", $controller->action)) {
      return;
    }
*/

Prefixを使用しているとすべてにBasic認証が効いてしまうので、 それぞれ分けたいときは追加でゴニョゴニョしてください。

以上、今日はこの辺で。

Comments