2010-11-21 3 views
0

, also ich die Zend Auth Clear-Identity-Funktion durch Ajax aufrufen und wenn der Ajax True zurückgibt (dh die Identität wurde gelöscht), ich lade nur den Browser durch location.reload()Problem mit Site-Cache bei Verwendung von Logout-Skript in Zend Auth

und in der Regel, was passiert, ist, dass die Seite des folgenden:

if ($this->auth->hasIdentity()) { 

    echo "Welcome"; 

} 

und

if (!$this->auth->hasIdentity()) { 

    echo "some login form"; 

} 

aber dann, da die Seite wird vom Browser zwischengespeichert .... obwohl ich Ich habe das Abmeldeskript über Ajax aufgerufen (was die Identität löscht) und die Seite neu geladen. Die Seite zeigt immer noch den Begrüßungsbildschirm an, da sie denkt, dass sich die Seite nicht geändert hat, und zeigt nur den Cache an, der den Begrüßungsbildschirm enthält Formular, wenn es neu geladen wird ...

ist es da, um den Cache manuell oder eine Art mit jquery zu löschen, so dass es nicht nur den Cache laden wird, wenn neu geladen?

Antwort

0

Ich könnte falsch liegen, aber wäre das nicht eher ein Caching-Problem im Allgemeinen? Weisen Sie den Browser an, diese bestimmte Seite nicht zwischenzuspeichern, und das Problem sollte gelöst werden.

0

Meine Empfehlung ist es, Ihre Logout-Funktion Ajax nicht zu machen. machen es nur eine regelmäßige Verbindung wie:/Authentifizierung/Logout/

Diese Aktion sollte dies tun:

public function logoutAction() { 
     $auth = Zend_Auth::getInstance(); 
     $auth->clearIdentity(); 
     $this->_redirect('/authentication/login'); 
} 

Das funktioniert für mich jedenfalls.

Ich verstehe, dass dies nicht eine ideale Antwort sein kann, aber ich würde immer noch die Notwendigkeit für die Abmeldung Link Ajax herausfordern.

Verwandte Themen