ログインチェックをプラグインにて行う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だった場合に、自動的に設定されていますので、
わざわざ設定する処理を記述する必要はありません。