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