Miles' Blog

天涯何處無幹話,何必要講實務話

Zend_Auth

Zend_Auth 是用來驗證使用者的工具,它支援以下的驗證方法:

橋接器實作的介面是 Zend_Auth_Adapter_Interface

驗證後,需要暫存資訊在 Storage 裡,它也提供一個介面 Zend_Auth_Storage_Interface 可以繼承,並使用 setStorage() 即可做設定。

Zend Framework 對 Storage 有兩個實作:

Basic usage

Zend_Auth 使用單例模式實作,取得實例的方法為 Zend_Auth::getInstance()

裡面可以操作的方法如下:

Method Name Description
Zend_Auth_Storage_Interface getStorage() 取得儲存器,如果沒有設定儲存器的話,預設會 new 一個 Zend_Auth_Storage_Sessionn 實例
Zend_Auth setStorage(#Zend_Auth_Storage_Interface $storage) 設定儲存器
Zend_Auth_Result authenticate(#Zend_Auth_Adapter_Interface $adapter) 驗證
boolean hasIdentity() 確認是否有登入
mixed getIdentity() 取得登入身份,無登入會回傳null
void clearIdentity() 清除登入身份

DbTable Adapter

DbTable即為傳統資料表驗證,使用資料表查詢。如果有符合的欄位,即為登入成功。

可以用建構子去設定初值,或是使用 setter 設定初值

// 建構子
authAdapter = new Zend_Auth_Adapter_DbTable(
$dbAdapter,
'users',
'username',
'password',
'MD5(?) AND status = 1'
);

// setter
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter
->setTableName('users')
->setIdentityColumn('username')
->setCredentialColumn('password')
->setCredentialTreatment($credentialTreatment)
;

初始化完後,就可以設定帳號密碼做驗證了

$authAdapter
->setIdentity('my_username')
->setCredential('my_password')
;

$auth->authenticate($authAdapter);

可以取得登入的基本資訊

$authAdapter->getResultRowObject(array('id', 'username', 'nickname'));
0%