我使用 Zend_Auth 对用户进行身份验证,然后将他们的详细信息存储在默认的 Zend_Auth 会话中。这意味着当用户编辑他的详细信息时,这些更改不会反映在应用程序中,直到他重新进行身份验证。
我想避免这个问题:
- 当用户登录时,我们只将他的存储
user ID
在Zend_Auth
会话中 在每个请求中,我们在一个
preDispatch()
钩子中从数据库中获取用户的详细信息,使用在会话user ID
中登录时存储的信息:Zend_Auth
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 ??? } } }
问题是:我在哪里存储这个
User
对象?我认为我们不应该为此使用会话,因为会话的目标是持久化数据。但是不需要持久性,因为我们在每次请求时都从数据库中重新获取数据。只有user ID
必须是持久的。User
将对象存储在Zend_Registry
此处是一种选择吗?