gpt4 book ai didi

zend-framework - Zend_Auth 存储如何工作?

转载 作者:行者123 更新时间:2023-12-03 17:21:22 24 4
gpt4 key购买 nike

这很简单。我写的

$auth->getStorage()->write($user);

然后我想在一个单独的过程中加载这个 $user,但我不能,因为
$user = $auth->getIdentity();

是空的。我不是刚刚……设置了吗?为什么它不起作用?哈?

[编辑 2011-04-13]

差不多两年前就有人问过这个问题。然而,事实是,我在 2010 年 7 月重复了这个问题,并得到了一个很棒的答案,当时我根本不明白。

链接: Zend_Auth fails to write to storage

从那以后,我使用与 Zend_Auth 相同的存储引擎在我的所有项目中使用(有时需要额外调整)构建了一个非常好的小类,但避开了所有不好的地方。
<?php

class Qapacity_Helpers_Storage {

public function save($name = 'default', $data) {

$session = new Zend_Session_Namespace($name);
$session->data = $data;

return true;
}

public function load($name = 'default', $part = null) {

$session = new Zend_Session_Namespace($name);

if (!isset($session->data))
return null;

$data = $session->data;

if ($part && isset($data[$part]))
return $data[$part];

return $data;
}

public function clear($name = 'default') {

$session = new Zend_Session_Namespace($name);

if (isset($session->data))
unset($session->data);

return true;
}

}

?>

最佳答案

它应该工作。

下面是 Auth getIdentity 函数的实现。

/**
* Returns the identity from storage or null if no identity is available
*
* @return mixed|null
*/
public function getIdentity()
{
$storage = $this->getStorage();

if ($storage->isEmpty()) {
return null;
}

return $storage->read();
}

这是 PHP Session Storage 写入和读取函数的实现:
/**
* Defined by Zend_Auth_Storage_Interface
*
* @return mixed
*/
public function read()
{
return $this->_session->{$this->_member};
}

/**
* Defined by Zend_Auth_Storage_Interface
*
* @param mixed $contents
* @return void
*/
public function write($contents)
{
$this->_session->{$this->_member} = $contents;
}

您确定要加载 Zend_Auth 类的同一个实例吗?

你正在用吗
$auth = Zend_Auth::getInstance();

也许您是在 getIdentity 方法之后调用 write 方法?

无论如何,正如我之前所说,你正在做的事情应该有效。

关于zend-framework - Zend_Auth 存储如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com