zend-framework - 编辑用户后更新 Zend_Auth 存储

标签 zend-framework zend-auth

我使用 Zend_Auth 来验证用户,然后将他们的详细信息存储在默认的 Zend_Auth session 中。这意味着当用户编辑他的详细信息时,这些更改不会反射(reflect)在应用程序中,直到他重新进行身份验证。

我想这样避免这个问题:

  1. 当用户登录时,我们只将他的用户 ID 存储在 Zend_Auth session 中
  2. 在每个请求中,我们使用 preDispatch() Hook 从数据库中获取用户的详细信息,使用登录时存储在 中的 user ID code>Zend_Auth session :

    class Plugin_Auth extends Zend_Controller_Plugin_Abstract
    {
    
        public function preDispatch(Zend_Controller_Request_Abstract $request)
        {
            if ($auth->hasIdentity())
            {
                $id = $auth->getIdentity()->id;
    
                $userModel = new Model_User();
    
                $user = $userModel->fetchOne($id);
    
                // Where do I store this user object ???
            }
    
        }
    }
    
  3. 问题是:我在哪里存储这个 User 对象?我认为我们不应该为此使用 session ,因为 session 的目标是持久化数据。不过不需要持久化,因为我们会在每次请求时从数据库中重新获取数据。只有 user ID 必须是持久的。将 User 对象存储在 Zend_Registry 中是这里的一个选项吗?

最佳答案

我认为示例是解释如何将新的身份验证详细信息写入 Zend_Auth 存储对象的最佳示例:

$userDetails = array('foo' => 'bar');
$storage = new Zend_Auth_Storage_Session();
// set sorage for Zend_Auth
Zend_Auth::getInstance()->setStorage($storage);
// write data to the storage
Zend_Auth::getInstance()->getStorage()->write($userDetails);
// read data from storage
var_dump(Zend_Auth::getInstance()->getStorage()->read());
// edit user's data
$userDetails = array('foo' => 'bar', 'foo', 'bar');
// write new data to storage
Zend_Auth::getInstance()->getStorage()->write($userDetails);
// read new written data from storage
var_dump(Zend_Auth::getInstance()->getStorage()->read());

我认为这解释了如何设置 Zend_Auth 存储,并在以后更改它。

关于zend-framework - 编辑用户后更新 Zend_Auth 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13604267/

相关文章:

php - 将 HTML 占位符添加到 Zend_Form 中

jquery - ZFdebug Jquery干扰

php - 使用 zend 框架的 SQL 查询逻辑

zend-framework - Zend_Auth_Adapter 使用数据映射器

php - Zend_Pdf 计算当前字体中文本字符串的长度以进行换行

php - Zend_Auth getidentity 始终返回 null

使用 Zend Auth 和 Zend ACL 进行 PHP 单元测试

Android 保存用户 session

php - 一次提交中的 Magento 多个数据库事务