2009-09-24 58 views
5

我试着使用:Zend_Auth的检查,如果用户登录

// do login if request is posted 
if (isset($_POST) && !empty($_POST)) { 
    // do authencation 
    ... 
} else { 
    // request not posted 
    // see if already logged in 
    if (Zend_Auth::getInstance()->hasIdentity()) { 
     echo "already logged in as: " . Zend_Auth::getInstance()->getIdentity(); 
    } 
} 

Zend_Auth::getInstance()->hasIdentity()似乎从来都是假的......即使登录

+0

检查cookie,会话? – 2009-09-24 08:23:47

+3

你如何做你的认证?你如何确保它被持续?如果你已经完成认证,hasIdentity将返回true! – markus 2009-09-24 08:28:06

+0

我使用Zend_Auth进行身份验证,http://framework.zend.com/manual/en/zend.auth.html#zend.auth.introduction.persistence.default,根据该$ result-> getIdentity()=== $ auth->的getIdentity() – iceangel89 2009-09-24 10:39:38

回答

11

你曾经打电话Zend_Auth::getInstance()->getStorage()->write($identity)

如果您通过Zend_Auth::getInstance()->authenticate($adapter)进行身份验证,它将为您写入存储,但是如果您直接在适配器上调用身份验证,则需要将该身份写入存储。

1

后,你确定你的身份坚持? (即存储在会话或类似的东西) 如果不是,你将不得不重新验证每个请求

1

我有同样的问题, 在我的情况下session.save_path价值上没有我的服务器上设置(phpinfo()) ,所以我在configs/application.ini加入这个值:

resources.session.save_path = APPLICATION_PATH "/../data/sessions" 

和我的服务器上我创造目录/data/sessions其中sessions有777权限