Я использую 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
?