ログインチェックをプラグインにて行う

今回は、会員サイト等でよく使うログイン状態チェックを、

プラグインで実現するためのクラスを作りました。


ログイン状態チェックは、ログイン画面以外では必ず必要で、

しかも通常の処理(データ登録、参照等)とは関連しないので、

プラグインにするのに、うってつけだと思ったのです。

サンプルソースは以下になります。


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は、認証系の処理を集めたモデルクラスです。

これについては、また後日サンプルソースを公開します。

コメント 停止中

%d人のブロガーが「いいね」をつけました。