Как получить идентификатор сеанса из сеанса Zend_Auth?

Используя хранилище сеансов Zend_Auth по умолчанию (сеансы PHP), он создает идентификатор сеанса и помещает его в файл cookie. Если я хочу получить имя пользователя (идентификацию) аутентифицированного пользователя, метод Zend_Auth::getInstance()->getIdentity() получает это. Однако я хочу получить идентификатор сеанса пользователя. Я могу получить это, просто взглянув на $_COOKIE или используя session_id(), но это кажется хакерским, и если я когда-нибудь отойду от хранилища сеансов PHP, может ли оно сломаться? Итак, как лучше всего получить идентификатор текущего сеанса Zend_Auth?


person MidnightLightning    schedule 24.09.2012    source источник
comment
А что, если использовать стандартную функцию по прямому назначению, это хакерство?   -  person tuespetre    schedule 25.09.2012
comment
@tuespetre, если бы я создавал сеансы с session_start(), то получение идентификатора с session_id() имеет смысл и не является хакерским. Но, поскольку я работаю с библиотекой, которая может делать другие вещи или может делать другие вещи в будущем, использование библиотечной функции более высокого уровня вместе с низкоуровневым вызовом ядра кажется неуместным.   -  person MidnightLightning    schedule 25.09.2012


Ответы (1)


Я не думаю, что вы найдете хороший способ сделать это. Если бы такой метод существовал, он был бы определен в Zend_Auth_Storage_Interface, но типы хранения, не относящиеся к сеансу, не обязательно имеют эквивалент идентификатора сеанса, поэтому классы хранения аутентификации не имеют для этого никакой абстракции. Ближайшее, что вы получите, вероятно:

Zend_Session::getId()

но это просто вызывает session_id() PHP, так как Zend_Session зависит от встроенной функциональности сеанса PHP.

person Tim Fountain    schedule 24.09.2012