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

今回の認証クラスでは、DBを使って認証処理を行っています。

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


説明を日本語で書くと、余計にわかりづらいくなってしまいましのたで、

コードとコメントを見て理解していただけたらと思います。


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Zend_Loader::loadClass('Zend_DB_Table_Abstract');
Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
Zend_Loader::loadClass('Zend_Auth_Storage_Session');
 
class authModel
{
 private $_authStorage;
 
 public function __construct()
 {
  $config = new Zend_Config_Ini('config/system.ini', 'default');
  // ログイン情報を格納するセッションを指定
  $this->_authStorage
   = new Zend_Auth_Storage_Session($config->session);
 }
 
 public function login($post)
 {
  $db = Zend_Db_Table_Abstract::getDefaultAdapter();
  $authAdapter = new Zend_Auth_Adapter_DbTable($db);
  $authAdapter->setTableName('Accounts')
         ->setIdentityColumn('login_id')   // IDカラムを指定
         ->setCredentialColumn('password'); // 認証用カラムを指定
 
  // 上記で指定したカラムに、認証したい値を設定
  $authAdapter->setIdentity($post['login_id']) 
        ->setCredential($post['password']); 
 
  // 認証実行
  $result = $authAdapter->authenticate();
 
  if ($result->isValid()){
   // 認証OKとなったレコードから、login_idとstatusを取りだす
   $row = $authAdapter->getResultRowObject(array(login_id, status));
   // ログイン情報格納用セッションに取得した情報を設定する
   $this->_authStorage->write($row);
  }
 
  return $result;
 }
 
 public function logout()
 {
  $this->_authStorage->clear();
 }
 
 public function isAuth()
 {
  return (isset($this->get()->login_id) && isset($this->get()->status));
 }
 
 public function get()
 {
  return $this->_authStorage->read();
 }
}



ログイン情報を設定するセッションに、デフォルト(Zend_Auth)を利用したり、

セッションに設定する情報が、認証に利用したID(上記だとlogin_id)だけでいい場合は、

より簡潔に記述することができます。


デフォルトのセッションを利用する場合は、コンストラクタ内の処理は必要ありません。

セッションに設定する情報が、認証に利用したIDのみでいい場合は、

認証処理を実行してOKだった場合に、自動的に設定されていますので、

わざわざ設定する処理を記述する必要はありません。

  • ログインチェックをプラグインにて行う2 はコメントを受け付けていません。
コメントは閉じられています。

return top

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