2009-11-13 4 views
6

J'ai défini mon ErrorDocument 401 pour qu'il pointe vers la page de création de compte de mon site Web, mais tous les navigateurs ne semblent pas honorer cette redirection (Safari).Authentification Apache: redirection en cas d'échec, de manière fiable?

De même, les autres navigateurs (Firefox, Chrome) ne quittent jamais le système en demandant le mot de passe et affichent ErrorDocument. Ceci fait qu'un bon nombre d'utilisateurs abandonnent essayant après beaucoup de tentatives de mot de passe sans voir la page de création de compte.

Y at-il un moyen de rendre la redirection plus fiable, sans saccager complètement l'authentification de base?

Répondre

15

La réponse simple à votre question est non, vous ne pouvez pas rendre ceci plus fiable sans mettre en application l'authentification faite sur commande. La seule façon que Firefox et Chrome affichera la page que vous avez spécifiée dans la directive ErrorDocument 401 est si vous cliquez sur le bouton Annuler. En outre, il n'y a pas de redirection envoyée avec le code HTTP 401; il s'agit plutôt d'un contenu du document spécifié avec la directive ErrorDocument 401. Vous pouvez faire redirect en utilisant HTML balise meta:

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

solutions possibles à votre problème sont pour créer le module d'authentification HTTP personnalisée de base ou d'utiliser un langage comme PHP qui prend en charge les crochets d'authentification HTTP de base

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

+0

L'authentification de base Apache est si bien établie que j'espérais que quelqu'un avait déjà créé et publié un tel module personnalisé. – bukzor

+0

Vous pouvez consulter http://modules.apache.org/. Jetez un oeil à la mod_auth_timeout. Il peut avoir quelque chose de similaire. – Boris

+2

['mod_auth_form'] (http://httpd.apache.org/docs/trunk/mod/mod_auth_form.html) est apparu dans Apache 2.4. Cela facilite la configuration à la manière standard d'Apache. Un 'form_handler' (dans une langue) est requis pour que votre formulaire gère bien le login bien sûr. –

-2

Je suppose que vos utilisateurs firefox et safari n'entrent pas dans le domaine avant le nom d'utilisateur, c'est-à-dire MYDOMAIN \ USERNAME. Il y a des paramètres dans Firefox qui permettront l'authentification directe; Je ne sais pas à propos de safari.

+0

Cette question est de faire la redirection après une connexion * échec * travail fiable, donc je ne vois pas comment ce qu'ils entrent fait une différence. – bukzor

Questions connexes