2009-09-24 4 views
5

Ho provato ad utilizzare:Zend_Auth Verificando utente è connesso

// 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() sembrano essere sempre false ... anche dopo un login

+0

controllare i cookie, sessione? –

+3

come si fa la vostra autenticazione? come fai a essere sicuro che sia persistito? se hai eseguito correttamente l'autenticazione, hasIdentity restituirà true! – markus

+0

ho usato Zend_Auth per l'autenticazione, http://framework.zend.com/manual/en/zend.auth.html#zend.auth.introduction.persistence.default, secondo quel $ result-> getIdentity() === $ auth-> GetIdentity() – iceangel89

risposta

11

Hai mai chiamato Zend_Auth::getInstance()->getStorage()->write($identity)?

Se si sta effettuando l'autenticazione tramite Zend_Auth::getInstance()->authenticate($adapter), esso scriverà in memoria per l'utente, ma se si sta eseguendo l'autenticazione direttamente sull'adattatore, si è responsabili della scrittura dell'identità nell'archivio.

1

stai sicuro che la vostra identità viene mantenuto? (ad esempio, memorizzato nella sessione o qualcosa di simile) in caso contrario, sarà necessario eseguire nuovamente l'autenticazione per ogni richiesta

1

Ho avuto lo stesso problema, nel mio caso il valore di session.save_path su non è stato impostato sul mio server (phpinfo()) così ho aggiunto configs/application.ini questo valore:

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

e sul mio server creo la dir /data/sessions dove sessions ha 777 autorizzazioni