2009-11-13 14 views
6

Ustawiłem ErrorDocument 401, aby wskazywał stronę tworzenia konta mojej strony internetowej, ale nie wszystkie przeglądarki wydają się honorować to przekierowanie (Safari).Uwierzytelnianie Apache: Przekierowanie po awarii, niezawodnie?

Również inne przeglądarki (Firefox, Chrome) nigdy nie rezygnują z pytania o hasło i pokazują ErrorDocument. Powoduje to, że duża liczba użytkowników rezygnuje z prób po wielu próbach podania hasła, nie widząc strony tworzenia konta.

Czy istnieje sposób, aby przekierowanie było bardziej niezawodne, bez całkowitego zniszczenia podstawowego uwierzytelniania?

Odpowiedz

15

Prosta odpowiedź na twoje pytanie brzmi: nie, nie można uczynić tego bardziej niezawodnym bez wdrożenia niestandardowego uwierzytelniania.

Jedynym sposobem, w jaki Firefox i Chrome wyświetlają stronę określoną w dyrektywie ErrorDocument 401, jest kliknięcie przycisku Anuluj. Ponadto nie ma przekierowania wysłanego z kodem HTTP 401; jest to raczej treść dokumentu określonego za pomocą dyrektywy ErrorDocument 401. Można zrobić przekierowanie za pomocą HTML meta tag:

<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> 

możliwe rozwiązania problemu są do tworzenia niestandardowych podstawowy moduł uwierzytelniania HTTP lub używać języka jak php, który obsługuje podstawowe haki uwierzytelniania HTTP

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

+0

Podstawowe uwierzytelnianie Apache jest tak dobrze ugruntowane, że miałem nadzieję, że ktoś już stworzył i wydał taki niestandardowy moduł. – bukzor

+0

Możesz sprawdzić http://modules.apache.org/. Spójrz na mod_auth_timeout. Może mieć coś podobnego. – Boris

+2

['mod_auth_form'] (http://httpd.apache.org/docs/trunk/mod/mod_auth_form.html) pojawił się w Apache 2.4. Ułatwia to konfigurowanie tego w standardowy sposób Apache. 'Form_handler' (w jakimś języku) jest wymagany, aby twój formularz rzeczywiście obsługiwał oczywiście logowanie. –

-2

Podejrzewam, że użytkownicy Firefoxa i Safari nie wchodzą do domeny przed nazwą użytkownika, tj. MYDOMAIN \ USERNAME. W firefoxie jest kilka ustawień, które umożliwią uwierzytelnianie tranzytowe; Nie wiem o safari.

+0

ten Pytanie dotyczy tego, czy przekierowanie po błędzie logowania * działa niezawodnie, więc nie widzę, jak to, co wprowadzają, stanowi różnicę. – bukzor