如何在Zend的会话中存储更多信息?

时间:2011-12-01 19:19:18

标签: zend-framework

所以我创建了一个用户系统,我想在authenticate()之后从我的数据库中获取一些其他字段。我怎么能这样做?

1 个答案:

答案 0 :(得分: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(等)信息。 (回头看你的问题......我希望你不要问如何查询。我可能甚至没有回答你的问题。)