[linux] Re: Logout in http?

Rob Sterenborg rob op sterenborg.info
Wo Dec 28 18:33:45 CET 2005


> Nee. De eerste keer dat jij naar zo'n pagina gaat, sturt the server
> terug "Authroization Required". Jou browser vraagt dan voor naam en
> wachtwoord. Dan stuurt jou browser die gegevens in een nieuwe request.
> 
> Als jij nu op een link klikt binnen die site, zonder een wachtwoord
> zegt de server weer "Authorization Required". Dus jou browser is
> behulpzaam en stuurt de wachtwoord *elke* *keer*. Het probleem is dat
> jou browser niet weet wanneer op te houden met het wachtwoord sturen,
> en er is geen manier om van de server te zeggen "stop maar, niet meer
> nodig". 
> 
> Je kan niet uitloggen omdat je nooit ingelogd was. Technisch gezien is
> het een fout in de browser, maar iedereen doet het zo...

Volgens mij kan je met PHP, realms en sessions wat in elkaar knutselen.

Bij de start van elke pagina test je of er een sessie met een realm ID
bestaat. Zo niet, dan genereer je er een.
Met deze realm ID authentisieer je de user (login met user/pass).
Door op logout te klikken, genereer je een eerst nieuwe realm ID en
daarna een 401 header. Dan ben je uitgelogd omdat de user/pass niet bij
de nieuwe realm horen. Of en zo ja hoe lang de oude AUTH info blijft
bestaan weet ik niet.

Je zou dan met deze headers kunnen werken :
header("WWW-Authenticate: Basic realm='[ID".$realm."]'"); 
header("HTTP/1.0 401 Unauthorized");

Ik hoop dat mijn theorie in de praktijk ook klopt want ik heb hier snel
even naar gezocht en ben zo op dit idee gekomen en heb het niet getest.
Overigens lijkt het me best een hoop werk om dit overal door te voeren,
tenzij je het met includes/requires maakt.


Gr,
Rob




More information about the Linux mailing list