2009-07-22 7 views
26

Mögliche Duplizieren:
HTTP authentication logout via PHPWie kann ich mich abmelden, wenn ich .htaccess (und .htpasswd) Authentifizierung verwende?

Hallo

Ich habe eine gewisse Funktionalität auf meiner Website mit .htaccess und .htpasswd geschützt. Wenn Benutzer versuchen, auf diese zuzugreifen, werden sie aufgefordert, Details einzugeben. Sie geben ihre Details ein und kommen herein und können Sachen usw. sehen. Alles funktioniert gut.

Meine Frage ist, wie ich eine logout Funktionalität für diese Art der Authentifizierung erstellen. Ich weiß, dass sie das Browserfenster auf "Abmelden" schließen können. Aber das ist nicht ideal. Was würdest du mir vorschlagen?

Danke.

+0

Wurde zuvor z.B. siehe http://stackoverflow.com/questions/449788/http-authentication-logout-via-php – VolkerK

+0

Es gibt keine Implementierung, ohne einige Zeilen zu schreiben, um die Sitzung zu entfernen oder die Header zurückzusetzen. Versuchen Sie den einfachen Ansatz. http://blog.acpmasquerade.com/2011/09/basic-http-authentication-straight.html#more – acpmasquerade

Antwort

31

Browser in der Regel unterstützen dies nicht, How do I log out?

sehen Da Browser ausloggen erste haben wollte Implementierung der Standardauthentifizierung, Website-Administratoren gestartet wissen, wie der Benutzer zu lassen. Da der Browser die Benutzername und Passwort mit dem Authentifizierungs Reich-Caches, wie in diesen Tutorial weiter oben beschrieben, ist dies nicht eine Funktion von die Serverkonfiguration, ist aber ein darum, den Browser zu bekommen die Anmeldeinformationen vergessen , also , dass das nächste Mal, wenn die Ressource angefordert wird, der Benutzername und das Kennwort erneut eingegeben werden müssen. Es gibt zahlreiche Situationen, in denen dies wünschenswert ist, wie wenn ein Browser in einem öffentlichen Ort verwendet wird, und nicht Wunsch des Browser angemeldet verlassen in, so dass die nächste Person auf Ihr Bankkonto bekommen.

Doch obwohl dies vielleicht die am häufigsten gestellten Frage über Standardauthentifizierung, die bisher keiner von die großen Browser-Hersteller haben gesehen ein wünschenswertes Merkmal als in ihre Produkte zu setzen.

Folglich ist die Antwort auf diese Frage, können Sie nicht. Es tut uns leid.

Es gibt Browsererweiterungen, mit denen Sie die HTTP-Authentifizierung für eine Site löschen können. Für Firefox bietet die WebDeveloper Erweiterung (die sowieso eine meiner Lieblings-Erweiterungen ist) diese Funktion an. Das Menü dafür ist Miscellaneous/Clear Private Data/HTTP Authentication.

+0

Ah, ich sehe .. danke. – TigerTiger

+5

Firefox's Standard Weg sich von der HTTP-Authentifizierung abzumelden, ist unter "Extras"> "Zuletzt verwendeten Verlauf löschen ..." als Checkbox "Aktive Logins" verfügbar. Dies ist weder intuitiv noch ermöglicht es Ihnen, sich nur von einer Domäne abzumelden, sondern Sie melden sich immer von jeder Seite ab. – aef

19

Getestet auf firefox und chrom. Sie können den Benutzer an http://logout:[email protected] senden. Dadurch wird der aktuelle Benutzername/das aktuelle Passwort durch Abmelden/Abmelden ersetzt (dies könnte eine ungültige Kombination aus Benutzer und Passwort sein). Da sie nun den falschen Benutzernamen/Passwort haben, müssen sie sich erneut anmelden, um auf die Seite zuzugreifen.

Auf Opera funktioniert das nicht, weil Sie mehrere Benutzernamen/Kennwörter gleichzeitig haben können. Es funktionierte auch nicht auf IE, weil IE scheint http://username:[email protected] URLs nicht zu unterstützen.

+9

Nach RFC 3986 (URI: Generic Syntax) Abschnitt 3.2.1. (Benutzerinformationen) Die Verwendung von 'user: password @ host' ist veraltet. Die Verwendung von 'http: // logout @ yourserver.example.com /' ist in den meisten Fällen nicht möglich und sollte auch funktionieren. – aef

+1

chrome kann auch – apis17

+0

das funktionierte für mich in chrom heute, tolle sachen, danke jungs! –

2

Es ist möglich, sich abzumelden. Sie sollten eine Abmeldeseite implementieren, die HTTP 401 zurückgibt, bis der Benutzer BAD-Anmeldeinformationen eingibt und dann woanders umleitet. Der Browser merkt sich die zuletzt angenommenen Anmeldeinformationen und überschreibt somit die korrekte Anmeldung.

Aber das ist irgendwie unbrauchbar, weil es die Zusammenarbeit des Benutzers braucht.

2

Ich stieß vor einigen Jahren auf dieses Problem. Es ist unglaublich frustrierend zu entdecken, dass es ein Problem gibt, das jeder hat und niemand scheint im Allgemeinen zu lösen.

Wie in Inadequate Logout functionality in HTTP Authentication erwähnt, denke ich, ist die Antwort, den RFC zu ändern, um Timeouts zu erlauben und einen Abmeldenknopf zu stützen. Der zusätzliche Vorschlag des Autors, dass der Server in der Lage sein sollte, einen "Abmelden" -Kopf zu senden, würde den Bedarf für Client-User-Agent-Unterstützung beseitigen, da Websites einfach einen Link auf einer Webseite zu einer URL hinzufügen könnten, die den erforderlichen Antwortcode zurückgibt und/oder Header, um die aktuelle Sitzung ungültig zu machen.