ログインチェックをプラグインにて行う
今回は、会員サイト等でよく使うログイン状態チェックを、
プラグインで実現するためのクラスを作りました。
ログイン状態チェックは、ログイン画面以外では必ず必要で、
しかも通常の処理(データ登録、参照等)とは関連しないので、
プラグインにするのに、うってつけだと思ったのです。
サンプルソースは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Zend_Loader::loadClass('Zend_Controller_Plugin_Abstract'); Zend_Loader::loadClass('Zend_Session'); Zend_Loader::loadClass('Zend_Controller_Action_Helper_Redirector'); require_once('models/authModel.php'); class Zend_Controller_Plugin_Auth extends Zend_Controller_Plugin_Abstract { public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { Zend_Session::start(); $auth = new authModel(); $controller = $request->getControllerName(); $action = $request->getActionName(); if (($controller == 'index') && ($action == 'index')) { // ログイン画面の場合は、認証情報削除 $auth->logout(); }else{ if (!$auth->isAuth()){ // 認証エラーの場合は、認証情報を削除し、ログイン画面へ $auth->logout(); $helper = new Zend_Controller_Action_Helper_Redirector(); $helper->gotoUrl('/'); } } } } |
この例では、http://test.com/にログイン画面があることを想定しています。
そのため、コントローラー名、アクション名がindexの場合は、
一旦、保持しているログイン状態を破棄しています。
今回は、DBデータに問い合わせる方法で、ログイン認証を行い、
ログインOKの場合は、ログイン情報(login_id等)を
セッションに保持するというサンプルソースを作りました。
そのため、このプラグインの中で、Zend_Session::start()も実行しています。
authModelは、認証系の処理を集めたモデルクラスです。
これについては、また後日サンプルソースを公開します。