隨手筆記2012-2-3

#zend的controller的_redirect之後的敘述不會執行

#Zend_Auth的使用者驗證是透過實作Zend_Auth_Adapter_Interface的類別來進行,實際上是實作Zend_Auth_Adapter_Interface介面裡的authenticate方法,而且這個authenticate方法必須傳回Zend_Auth_Result的實體。

一般是透過資料庫資料進行使用者驗證,ZF有實作一個Zend_Auth_Adapter_DbTable類別來操作。在進行驗證之前必須先指定資料庫連線物件、資料表名稱、帳號欄位、密碼欄位及如何處理從表單傳入的密碼,這可以依序是Zend_Auth_Adapter_DbTable類別的建構參數,也可以稍後透過setTableName、setTableName、setCredentialColumn及setCredentialTreatment等方法來指定。例如

$authAdapter = new Zend_Auth_Adapter_DbTable(

$dbAdapter,  //資料庫連線物件

‘users’,      //使用者帳號資料表

‘username’,    //帳號欄位名稱

‘password’ ,   //密碼欄位名稱

‘md5(?)’          //處理傳入密碼的方法,非必要

);

// …or configure the instance with setter methods

$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);

$authAdapter->setTableName(‘users’)

->setIdentityColumn(‘username’)     //帳號欄位名稱

->setCredentialColumn(‘password’) //密碼欄位名稱

->setCredentialTreatment(‘md5(?)’);  //處理傳入密碼的方法,非必要

上述「md5(?)」實際上是將傳入的密碼值套用到?的位置,若不設此項目,則代表使用原始傳入密碼去做比對。此設定還可以做進階的操作,例如,若是要透過activate欄位來控制使用者帳號的啟用與否,則此項目可以設為md5(?) and activate = 1

至於從表單傳來的帳號及密碼,則透過setIdentity及setCredential來指定。例如

$authAdapter->setIdentity($_POST[‘username’])

->setCredential($_POST[‘password’]);

原始資料請見:http://framework.zend.com/manual/en/zend.auth.adapter.dbtable.html

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Proudly using Dynamic Headers by Nicasio WordPress Design