#php #zend-framework #authentication
#php #zend-framework #аутентификация
Вопрос:
Я пытаюсь выработать наилучшую конфигурацию для моих пространств имен сеанса Zend.
У меня есть две категории данных, которые мне нужно отслеживать в сеансе пользователя. Первое — это конфиденциальные данные, относящиеся к пользователю. Когда пользователь выходит из системы, информация должна быть удалена из сеанса.
Вторая категория данных содержит неконфиденциальную информацию, относящуюся к шаблонам использования конкретного пользовательского агента. Оно должно сохраняться после выхода пользователя из системы.
Я использую Zend_Auth, и поэтому в сеансе есть пространство имен Auth. Я думаю, что мне следует сохранить другие данные, связанные с пользователем, в этом сеансе. (Я предполагаю, что Zend_Auth::getInstance()->clearIdentity() уничтожит все пространство имен).
Кроме того, я думаю, мне нужно второе пространство имен для хранения информации, связанной с UA, которое не будет уничтожено при выходе из системы.
Звучит ли это разумно? Я был бы рад услышать от всех, у кого есть опыт использования пространства имен Auth для хранения дополнительной информации.
Спасибо!
Комментарии:
1. «Когда пользователь выходит из системы, информация должна быть удалена из сеанса». — есть ли причина для этого?
2. Привет, zerkms, мне нужно удалить их идентификатор пользователя, адрес электронной почты и т.д. Из сеанса, поскольку они больше не являются «авторизованным пользователем».
3. @Kim: просто создайте новый сеанс, не заботьтесь о старом. GC будет.
4. @zerkms, не уверен, что ты имеешь в виду. Если у вас есть второе пространство имен в сеансе (то есть то, которое не связано с Auth), то при выполнении clearIdentity() второе пространство имен не уничтожается. Вы хотите сказать, что я должен вручную уничтожить сеанс?
5. @Kim: если пользователь вышел из системы, вы просто создаете новый сеанс. Ничего больше. Не заботьтесь о данных, потерянных в старой сессии — они будут очищены GC.
Ответ №1:
После экспериментов с этим я обнаружил, что было безопаснее оставить сессионное пространство имен Zend Auth в покое. Вместо этого я настроил альтернативное пространство имен в сеансе для всех данных, которые должны быть удалены при выходе из системы, и я использую namespaceUnset, чтобы отключить его.
Ответ №2:
Звучит неплохо. Я не понимаю, почему нет. Я лично использую Zend_Session_Namespace
все время, когда имею дело с вашими случаями. Я не думаю, что вам нужно очищать сеанс, он находится на сервере, и он все равно будет удален. Одно дело, когда вы хотите очистить идентификацию, это когда пользователь выходит из системы, но что бы еще вы ни хранили, очищать не нужно.