
Odlogování pomocí js
Mám aplikaci napsanou v LANSE. Ta má standardní lansácký login. Ten nemám možnost změnit. Potřebuju udělat logout (ten žel standardní nemá). A to tak, aby prohlížeč zapomněl všecky vyplněné údaje a při pokusu o uživatele dostat se zpět např. pomocí tlačítka Back vyžadoval opětné zadání jména a hesla. Nejlépe v js, event. v PHP. Musí fungovat v IE 6+, ale i v dalších hlavních prohlížečících (FF, Opera...).
Pro IE 7 funguje tohle:
document.execCommand("ClearAuthenticationCache");
Bohužel ačkoli Microsoft tvrdí, že to má fungovat v IE 6, tak v 6 to nefunguje , jen v 7.
Pro neIE prohlížeče jsem našla několik tipů, např.:
function createXMLObject() {
try {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
// code for IE
else if (window.ActiveXObject) {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
} catch (e) {
xmlhttp=false
}
return xmlhttp;
}
// Let's create an xmlhttp object
var xmlhttp = createXMLObject();
// Let's get the force page to logout for mozilla
xmlhttp.open("GET",".force_logout_offer_login_mozilla",true,"logout","logout");
// Let's send the request to the server
xmlhttp.send("");
// Let's abort the request
xmlhttp.abort();
// Let's redirect the user to the main webpage
window.location = "www.seznam.cz";
ale to mi nefunguje ani v FF, ani v Opeře .
Nemáte někdo tip na kód, který by opravdu fungoval?
Vyskúšal som to ClearAuthenticationCache v IE6 a IE7 - funguje v obidvoch. Ten druhý spôsob som vyskúšal vo FF a fungoval. Operu nemám k dispozícii a predpokladám, že tam to fungovať nebude.
Nevypisuje IE6 a FF nejakú inú chybu, kvôli ktorej to nejde (pretože by to tam malo fungovať)?
Ak testuješ, či to funguje alebo nie tak, že stlačíš tlačidlo Späť, tak to môže zobraziť predchádzajúcu stránku z keše. Ak nechceš stránky kešovať, tak musíš nastavovať správne HTTP hlavičky.
Ve stránce je tohle:
Přesto když se tam pokusím vrátit pomocí tlačítka Back, tak to s výjimkou IE 7 nevyžaduje opětovné zadání jména a hesla. Má tam být ještě něco dalšího?
Ve FF to funguje jen pokud zadám ručně na Vymazat vyrovnávací paměť a Vymazat relace s autentizací. Musím vymazat ručně oboje. Přitom to by měl dělat přece skript. Do chybové konzole se nenapíše nic.
Aha, ale ClearAuthenticationCache sa používa pri HTTP Basic autentifikácii.
Pri autentifikácii s použitím session ti nezostáva nič iné, len dať na server skript, ktorý tú session zruší (viď napr. session_destroy + komentáre).
Edit: Aha, teraz som si pozrel tú stránku, takže to nie je cez session. Ešte sa na to pozrem lepšie...
Můžeš to event. vyzkoušet na
www.bizdata.cz
Kliknout na PZ-online Slavia vývoj (3. ikonka v prvním řádku)
To odhlásenie vyzerá, že funguje. Jediný problém je to, že pri stlačení Späť sa načíta tá stránka z keše.
Skúsil by som nastaviť do hlavičky Cache-Control ešte pre-check=0, post-check=0, max-age=0.
Bohužel to nepomohlo
.