2006年07月05日

いちばん簡単な認証システム

CakePHP が標準で使える認証システムとしては、ACLがあります。INIベースとデータベースを切り替えることができたり、ユーザのアクセス許可コントロールなどかなり複雑なことができますが、それゆえに設定が面倒だったりします。

こちらで作成しているものは、「少人数で使用するWEBアプリ」なので、一つのユーザ名とパスワードを入れれば入れる、という仕組みのものを試しに作成してみました。

SdAuth.zip
sd_auth.zip

使い方は、

1) sd_auth.php(このファイル)を app/controllers/components に置く。
login.thtml を app/views/layouts に置く。

2) app_controller.php を、cake/appcontroller.php から app/ にコピーして、自分用に書き込めるようにする。

3) そこに以下を追加する。これで、プロジェクト全体が必ずここを通過するようになる。

class AppController extends Controller {

   var $components = array('SdAuth');

   function beforeFilter()
   {
    // Auth Check.
    if($this->SdAuth->isloggedin() == FALSE){
//$this->layout = “login”;
*$this->layout = '';*
*$this->render('../layouts/login');*
*exit();*
*など。pm11opさん、ありがとうございます。*
http://pm.11op.net/2007/12/post-28.php
    } else {
      $this->layout = "default";
    };
   }
}

4) ログアウトのリンクをどこかに作成する。どこかの ****s_controller.php に、次のコードを追加。

    function logout(){
     $this->SdAuth->logout();
     $this->redirect("/index.php");
    }

これで、ログインしないと使えないWEBシステムを簡単に作成できます。

これはモジュールとして作成したので、どんなプロジェクトにも使いまわすことができます。

こういういろいろな人の書いた Tips 集のようなものが、cakephp.org にある「スニペット」です。

http://cakeforge.org/snippet/

上記のURLに、いろいろ便利 Tips があります。
posted by SDozono at 16:53| ロサンゼルス ☀| Comment(3) | TrackBack(3) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
初めておじゃまします。このところCakePHPに挑戦し始めたばかりの者です。
いつも勉強させていただいています。

実はこちらの「いちばん簡単な認証システム」をローカル環境でそのまま再現してみたところ、どうしてもログインフォームが出力できずに頭を抱えています。
その際、ブラウザは完全な白紙表示になり、ソースを見ても何もない状態で、CakePHPのデバッグを有効にすると

> 0 query took ms
> Nr Query Error Affected Num. rows Took (ms)

の2行だけが表示されます。なお環境はCakePHP1.2(1.2.0.7296 RC2)で、SdAuthのlogin.thtmlはlogin.ctpに改名してあります。
試みに、SdAuthのログインフォーム出力処理を修正前の

> $this->layout = “login”;

に戻してみるとログインフォームは一応は表示されるので、どうもこの2行(↓)になんらかの問題が(CakePHP1.2環境において?)あるのではないか、と思い始めているのですが・・・。

> $this->render('../layouts/login');
> exit();

この状況について、なんらかのヒントなりいただくことはできないでしょうか。
Posted by K at 2008年07月31日 18:59
1.2からはAuthComponentが正式に組み込まれていますので、もうそちらを使ってください。(^_^)2006年の情報はもう化石化していますね。cakeforge.orgからもスニペットは削除しました。よろしくお願いします。
Posted by 管理人 at 2008年08月03日 23:02
わかりました。Authコンポーネントでやってみます。
どうもありがとうございました。
Posted by K at 2008年08月04日 22:53
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

PHP/CakePHP
Excerpt: Tag: PHP CakePHP マニュアル サンプル phpMyEdit WYSIWYG テンプレート 関連ページ コメント CakePHP フォーラム - CakePHP Users i..
Weblog: Happy Engineer Life (PukiWiki/TrackBack 0.3)
Tracked: 2007-01-31 12:07

cakePHPでの認証モジュール
Excerpt: 以前は認証モジュールとして「Pear::Auth」を使おうと思っていたけど、ちょっと面倒。 Pear::Authはいろいろ依存しているライブラリがあって、単純にそれだけをインストールする、ということ..
Weblog: PHPのテクメモ
Tracked: 2007-08-05 09:50

CakePHP 1.2 の AuthComponent でユーザ管理
Excerpt: ちょっとした案件で CakePHP のユーザ管理の仕組みを作る必要があるのだけど、どうもまとまった情報がない。 そこで、このブログエントリで ToDo をまとめ...
Weblog: ラボブログ
Tracked: 2008-12-07 23:16
手(パー)To make a comment: Please type your name and comment. at the validation field box, type 'cakephp'. And there two glay buttons. "Preview"/"Submit". Thank you!