Zend_Auth-> getStorage-> write()数据对象丢失

时间:2013-03-16 19:33:51

标签: php zend-framework zend-auth

我对我的身份验证数据感到疯狂。

当我的应用程序中有人登录时,我的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()时,我只找到用户名而不是整个对象!

2 个答案:

答案 0 :(得分:1)

我已经解决了我的问题! mysql配置出错。 read()函数,没有在Storage中找到任何东西,返回了用户名。谢谢你的帮助。

答案 1 :(得分:0)

这是因为Identity实际上是用户名(在您的情况下)。如果你想获得整个对象,你可以这样得到它:

$user = $this->auth->getStorage()->read();

另一件需要考虑的事情是,Zend_Auth的默认存储是一个会话,因此如果对象附加到其他资源(如db等),则可能需要序列化该对象。

希望这会有所帮助:)