3

Zend 还有一件奇怪的烦人的事情。

基本上,我在创建用户域后有以下代码:

$this->auth = Zend_Auth::getInstance();
$this->view->user = $this->user = $this->auth->getIdentity();
$this->user->idSite = $idSite;
$this->user->urlSite = $urlSite;
$this->auth->getStorage()->write($this->user);

让我非常恼火的是 auth->getIdentity() 就在那之后:

[idSite] => 0
[urlSite] => 

所以从这里开始变得更糟:如果我刷新或表单的任何其他参数失败并将我发送到相同的表单,但没有触摸上面的脚本,auth-getIdentity() 正确返回:

[idSite] => 2431
[urlSite] => exampledomain

这意味着代码正确且有效,但是如果表单填写正确并且一切都很好,我会重定向到下一步:$this->_redirect('nextstep'),并且 idSite 或 urlSite 都不会永远为空.

为什么是这样?为什么?

4

2 回答 2

3

我遇到了同样的问题,我认为最好通过使用会话命名空间功能的路线:

$oSession = new Zend_Session_Namespace('myStorage');
$oSession->foo = "bar";
$oSession->baz = 123;

您可以通过以下方式恢复数据:

$oSession = new Zend_Session_Namespace('myStorage');
$this->view->foo = $oSession->foo;

这里还有一些线索:Zend_Auth其中的主要信息是 Zend_Auth 数据的存储实际上只是一个名称空间。

对此的默认访问类似于:

$oSession = new Zend_Session_Namespace('Zend_Auth');

于 2010-07-02T14:07:21.787 回答
1

我也遇到了 Zend_Auth 不写入存储的问题。然而,在看到伊恩刘易斯的答案和你的回复后,我意识到它可能写得很好,但不能读。我之前已将会话中的“名称”设置更改为我自己的命名空间。一旦我删除它并再次开始使用默认值,我的 Zend_Auth 工作正常。

于 2011-06-26T18:37:33.837 回答