2009-09-24 1 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

проверить cookies, сеанс? –

+3

как вы выполняете аутентификацию? как вы убедитесь, что он сохраняется? если вы правильно выполнили аутентификацию, hasIdentity вернет true! – markus

+0

Я использовал Zend_Auth для аутентификации, http://framework.zend.com/manual/en/zend.auth.html#zend.auth.introduction.persistence.default, в соответствии с этим $ result-> getIdentity() === $ auth-> getIdentity() – iceangel89

ответ

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" 

и на моем сервере я создать dir /data/sessions, где sessions имеет 777 разрешений