2009-11-13 3 views
6

Ho impostato il mio ErrorDocument 401 in modo che punti alla pagina di creazione dell'account del mio sito Web, ma non tutti i browser sembrano onorare questo reindirizzamento (Safari).Autenticazione Apache: reindirizzamento in caso di errore, affidabile?

Inoltre, altri browser (Firefox, Chrome) non si chiudono mai chiedendo la password e mostrano l'ErrorDocument. Ciò causa un buon numero di utenti a rinunciare a provare dopo molti tentativi di password senza vedere la pagina di creazione dell'account.

C'è un modo per rendere il reindirizzamento più affidabile, senza cestinare l'autenticazione di base del tutto?

risposta

15

La semplice risposta alla tua domanda è no, non è possibile renderlo più affidabile senza implementare l'autenticazione personalizzata.

L'unico modo in cui Firefox e Chrome visualizzeranno la pagina specificata nella direttiva ErrorDocument 401 è se si fa clic sul pulsante Annulla. Inoltre, non vi è alcun reindirizzamento inviato con il codice HTTP 401; piuttosto, è un contenuto del documento specificato con la direttiva ErrorDocument 401. Si può fare redirect utilizzando 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> 

possibili soluzioni al problema sono per creare modulo di autenticazione HTTP di base personalizzato o di usare il linguaggio come PHP che supporta di base ganci di autenticazione HTTP

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

+0

L'autenticazione di base di Apache è così consolidata che speravo che qualcuno avesse già creato e rilasciato un modulo personalizzato. – bukzor

+0

Puoi controllare http://modules.apache.org/. Dai un'occhiata a mod_auth_timeout. Potrebbe avere qualcosa di simile. – Boris

+2

['mod_auth_form'] (http://httpd.apache.org/docs/trunk/mod/mod_auth_form.html) è apparso in Apache 2.4. Ciò semplifica la configurazione di questo in modo Apache standard. Un "form_handler" (in alcune lingue) è necessario per far sì che il tuo modulo gestisca effettivamente il login, ovviamente. –

-2

Sospetto che gli utenti di Firefox e Safari non inseriscano il dominio prima del nome utente, ad esempio MYDOMAIN \ USERNAME. Ci sono alcune impostazioni in firefox che permetteranno l'autenticazione pass-through; Non so del safari.

+0

Questo la domanda riguarda il fare il reindirizzamento dopo un errore di accesso * * funziona in modo affidabile, quindi non vedo come ciò che entrano fa la differenza. – bukzor