2011-12-01 36 views

回答

1

如果您想在超出典型範圍的身份中存儲額外信息,則可以在成功驗證後執行類似操作。

這是我的登錄控制器,processAction()一旦認證成功:

$identity = new stdClass; 
$identity->username = strtolower($auth->getIdentity()); 
$identity->miscParam1 = 'Miscellaneous parameter1'; 
$identity->miscParam2 = 'Miscellaneous parameter2'; 
# ... etc ... 

$storage = $auth->getStorage(); 
$storage->write($identity); 

需要注意的是,如果你使用這種方法,那麼每次你想獲得的用戶名或其他參數是非常重要的,你會需要找回它,像這樣:

$identity = Zend_Auth::getInstance()->getStorage()->read(); 
echo $identity->username; # echo is just for example 
echo $identity->miscParam1; 
echo $identity->miscParam2; 

請注意,您將使用getStorage()->read()代替getIdentity()(這可能也是工作,但我不知道)。

現在,唯一要做的就是使用Zend_Db_Select從數據庫中填充信息$identity->miscParam1(etc)。 (回頭看你的問題......我希望你不是問如何查詢,我可能甚至沒有回答你的問題。)

+0

'Zend_Auth-> getIdentity()'調用'Zend_Auth-> getStorage() - > read()',除非存儲爲空,否則返回null,所以使用getIdentity沒有問題,因爲它稍微短了一點,可能會描述更多的情況。 – drew010

+0

@ drew010這很好理解。我會自己開始使用它。 :) – fronzee