1

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

当我在我的应用程序中有人登录时,我的 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 返回的用户对象中)添加到我的 Acl 系统。

问题是当我调用 Zend_Auth->getInstance()->getIdentity() 时,我只找到用户名而不是整个 Object !

4

2 回答 2

1

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

于 2013-03-17T11:11:03.663 回答
0

这是因为身份实际上是用户名(在您的情况下)。如果要获取整个对象,可以这样获取:

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

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

希望这可以帮助 :)

于 2013-03-16T22:24:16.023 回答