我对我的身份验证数据感到疯狂。
当我的应用程序中有人登录时,我的authcontroller将用户数据存储在Zend_Auth存储中
class AuthController extends Zend_Controller_Action
{ ...
public function loginAction()
{ ...
$userMapper = new Application_Model_UsersMapper();
$user = $userMapper->fetchById($adapter->getResultRowObject()->id);
$this->auth->getStorage()->write($user);
}
}
在此之后,我创建了一个插件,用于将用户权限(存储在$ userMapper返回的User对象中)添加到我的Acl系统。
问题在于,当我调用Zend_Auth-> getInstance() - > getIdentity()时,我只找到用户名而不是整个对象!
答案 0 :(得分:1)
我已经解决了我的问题! mysql配置出错。 read()函数,没有在Storage中找到任何东西,返回了用户名。谢谢你的帮助。
答案 1 :(得分:0)
这是因为Identity实际上是用户名(在您的情况下)。如果你想获得整个对象,你可以这样得到它:
$user = $this->auth->getStorage()->read();
另一件需要考虑的事情是,Zend_Auth的默认存储是一个会话,因此如果对象附加到其他资源(如db等),则可能需要序列化该对象。
希望这会有所帮助:)