2009-09-24 100 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權限