2009-11-13 7 views
6

Ich habe mein ErrorDocument 401 so eingestellt, dass es auf die Seite zur Kontoerstellung meiner Website zeigt, aber nicht alle Browser scheinen diese Weiterleitung zu berücksichtigen (Safari).Apache-Authentifizierung: Redirect bei Ausfall, zuverlässig?

Auch andere Browser (Firefox, Chrome) hören nie auf, nach dem Passwort zu fragen und zeigen das ErrorDocument an. Dies führt dazu, dass eine gute Anzahl von Benutzern nach vielen Kennwortversuchen den Versuch abbricht, ohne die Seite zur Kontoerstellung zu sehen.

Gibt es eine Möglichkeit, die Weiterleitung zuverlässiger zu machen, ohne die Basisauthentifizierung komplett zu verlieren?

Antwort

15

Die einfache Antwort auf Ihre Frage ist nein, Sie können dies nicht zuverlässiger machen, ohne benutzerdefinierte Authentifizierung zu implementieren.

Die einzige Möglichkeit, dass Firefox und Chrome die Seite anzeigen, die Sie in der Direktive ErrorDocument 401 angegeben haben, ist, wenn Sie auf Abbrechen klicken. Außerdem wird keine Weiterleitung mit dem HTTP-Code 401 gesendet. Es handelt sich vielmehr um einen Inhalt des Dokuments, der mit der Direktive ErrorDocument 401 angegeben wird. Sie können Redirect mit HTML-Meta-Tag tun:

<Location "/protected"> 
    AuthUserFile /path/to/users 
    AuthName "This is protected area" 
    AuthGroupFile /dev/null 
    AuthType Basic 
    Require valid-user 

    #ErrorDocument 401 /register.html 
    ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=/register.html\"></html>" 
</Location> 

Mögliche Lösungen für Ihr Problem sind benutzerdefinierte grundlegende HTTP-Authentifizierungsmodul zu erstellen oder die Sprache zu verwenden, wie PHP, die eine Authentifizierung Haken

http://php.net/manual/en/features.http-auth.php

+0

Apache-Standardauthentifizierung ist so gut etabliert, dass ich hoffte, dass jemand ein solches benutzerdefiniertes Modul bereits erstellt und veröffentlicht hat. – bukzor

+0

Sie können http://modules.apache.org/ überprüfen. Schau dir das mod_auth_timeout an. Es kann etwas Ähnliches haben. – Boris

+2

['mod_auth_form'] (http://httpd.apache.org/docs/trunk/mod/mod_auth_form.html) erschien in Apache 2.4. Dies macht es einfacher, dies in einer Standard-Apache-Mode zu konfigurieren. Ein 'form_handler' (in irgendeiner Sprache) ist erforderlich, damit Ihr Formular tatsächlich den Login übernimmt. –

-2

Ich vermute, dass Ihre Firefox-und Safari-Benutzer nicht die Domäne vor dem Benutzernamen eingeben, d. H. MYDOMAIN \ USERNAME. Es gibt einige Einstellungen in Firefox, die Pass-Through-Authentifizierung ermöglichen; Ich weiß nichts über Safari.

+0

Diese grundlegende HTTP unterstützt Frage geht darum, die Umleitung nach einem Login * Fehler * zuverlässig zu machen, so dass ich nicht sehe, wie was sie eingeben einen Unterschied macht. – bukzor