PHPのRuby on Railsクローンのフレームワーク Akelos PHPをいじってみた出来事のメモ。

Akelosをいじってみるメモ帳

Akelos PHP Blogチュートリアル一覧(全18記事)
Akelos PHP ユーザ認証チュートリアル一覧(全19記事)

2008年09月02日

Akelosユーザ認証チュートリアル 9.Accountコントローラの中身 認証確認 beforeFilter

まず最初に、ログインな必要なページの場合、認証済みか確認する処理を加えます。
これにはbeforeFilterという機能を使います。

beforeFilterを使う事で、ページが生成される前に特定の処理をさせることが可能です。
ここでは認証の有無確認をするようにします。
さらにアクション毎に認証済みであることが必要かどうかも、一気に設定できちゃいます。

でわ、その中身としてaccount_controller.phpのAccountControllerクラス内に下記を加えます。

function __construct()
{
// beforeFilterで、自動的にApplicationControllerの_authpageメソッドを呼ぶように指定。
//ただし、delete,logout,editのみが呼び出し対象として指定
$this->beforeFilter(array('_authpage'=>array('only'=>array('delete','logout','modify','add','listing','show','edit','destroy'))));
}


まず、Filter類はクラスの実体化時に呼び出す __construct() メソッド内で設定します。
コメントが入っていますが、実体は一行、というか$this-beforeFilter()メソッドを呼んでいるだけですです。
beforeFilterが指定するのは、ユーザが定義したメソッド(関数)です。
$this->beforeFilter('呼び出す関数名');
で指定できます。これがシンプルな形です。
これによりAccountコントローラが動作する際に必ず呼ばれるようになります。

ここではさらに少々複雑にフィルター条件をつけています。
つまり指定した条件で、特定のアクションのみ、Filterを発動しろと設定しているのです。

$this->beforeFilter(
  array('呼び出す関数名' =>
   array('呼び出す条件'=>
    array('アクション名1','アクション名2',....)
   )
   )
 )

という構造になっています。
呼び出す条件は only または except が指定できます。
only = 指定しているアクションでのみ有効有効にする
except = 指定しているアクション以外で有効にする

ということで、コードに戻ってみますと
呼び出す関数名 _authpage
呼び出す条件 only つまり指定したアクションで有効にする
指定しているアクション 'delete','logout',.....

となっているわけです。

今回は _authpage 関数はアカウントコントローラの中に入れませんでした。
後述するApplicationControllerに入れています。
この理由もApplicationControllerの修正時に説明しますので、とりあえずこの状態で、次へ・・・。
posted by AMUAMU at 13:26| Comment(0) | TrackBack(0) | チュートリアル | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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

この広告は1年以上新しい記事の投稿がないブログに表示されております。