0
所以我創建了一個用戶系統,我想從authenticate()
之後的數據庫中獲取其他幾個字段。我怎樣才能做到這一點?如何在Zend中的會話中存儲更多信息?
所以我創建了一個用戶系統,我想從authenticate()
之後的數據庫中獲取其他幾個字段。我怎樣才能做到這一點?如何在Zend中的會話中存儲更多信息?
如果您想在超出典型範圍的身份中存儲額外信息,則可以在成功驗證後執行類似操作。
這是我的登錄控制器,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)。 (回頭看你的問題......我希望你不是問如何查詢,我可能甚至沒有回答你的問題。)
'Zend_Auth-> getIdentity()'調用'Zend_Auth-> getStorage() - > read()',除非存儲爲空,否則返回null,所以使用getIdentity沒有問題,因爲它稍微短了一點,可能會描述更多的情況。 – drew010
@ drew010這很好理解。我會自己開始使用它。 :) – fronzee