2011-12-01 38 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