2012-09-24 48 views
2

使用默认的Zend_Auth会话存储(PHP会话),它创建会话ID并将其放入cookie中。如果我想获取经过身份验证的用户的用户名(身份),则Zend_Auth::getInstance()->getIdentity()方法可以获取该身份。但是,我想获取用户的会话ID。我可以通过查看$_COOKIE或使用session_id()来得到它,但这看起来很骇人,如果我从PHP会话存储移走它可能会中断吗?那么获取Zend_Auth会话的当前会话ID的最佳方式是什么?如何从Zend_Auth会话获取会话ID?

+0

如何使用标准函数来达到预期的目的会是啥? – tuespetre

+0

@tuespetre如果我正在用'session_start()'创建会话,那么使用'session_id()'获得ID确实有意义,而且不是骇人听闻。但是,由于我正在与可能正在做其他事情的库一起工作,或者将来可能正在做其他事情,因此使用高级库函数和低级核心调用似乎是脱节。 – MidnightLightning

回答

7

我不认为你会找到一个很好的方式来做到这一点。如果存在这样的方法,它将在Zend_Auth_Storage_Interface中定义,但非会话类型的存储不一定具有等同的会话ID,所以认证存储类对此没有任何抽象。你会得到最接近的可能是:

Zend_Session::getId() 

但这只是调用PHP的session_id(),因为Zend_Session依赖于内置PHP会话功能。