Drupal + .htpasswd: Comment verrouiller un site de développement mais autoriser l'accès à un seul chemin

StackOverflow https://stackoverflow.com/questions/4877069

  •  28-10-2019
  •  | 
  •  

Question

J'ai donc une configuration de site de développement exécutant Drupal.J'ai verrouillé le site avec HTTPAuth + htpasswd de base pour empêcher les méchants d'entrer.

Le problème est qu'un seul nœud, un formulaire Web, doit être accessible sur ce site de développement à partir du site en ligne.

Ma question est la suivante: en raison du processus de démarrage compliqué de Drupal, comment pourrais-je procéder pour autoriser l'accès à uniquement ce fichier / URL unique?

Ma configuration vhost pour htpasswd:

<Directory />
   AuthUserFile /var/www/.htpasswd
   AuthName "my radbad dev site"
   AuthType Basic
   Require valid-user
</Directory>

J'ai essayé quelque chose comme ce qui suit sans succès:

<Location "/node/1334">
   Allow from all
   Satisfy any
</Location>
Était-ce utile?

La solution

Vous ne pouvez pas le faire comme ça, car le formulaire Web n'est pas un fichier , il est généré dynamiquement à partir des informations que vous avez fournies à Drupal (qu'il a placées dans la base de données).Tous les URI Drupal (à l'exception de vos fichiers téléchargés) sont index.php vous envoyant au bon endroit.Il n'y a aucun moyen de dire à httpauth que parfois index.php est accessible librement et parfois il nécessite l'authentification.

Il existe plusieurs options pour contrôler l'accès via un module Drupal, ou (si votre site en direct est Drupal) vous pouvez simplement lui donner le même formulaire Web, mais aucune modification avec httpauth ne résoudra votre problème.

Autres conseils

Les directives <Location> sont appliquées après le traitement de .htaccess.Cela signifie que mod_rewrite a déjà fait son travail et que l'URL est maintenant /index.php?q=node/1334.C'est mauvais, car <Location> ne peut pas être utilisé pour les configurations basées sur la chaîne de requête.Voir directive <Location> et Comment les sections sont fusionnées pour plus de détails.

Vous devrez trouver une solution totalement différente, comme rendre la base de données Drupal disponible sous une autre URL, qui n'est pas accessible de l'extérieur.

Si vous souhaitez utiliser la route d'authentification HTTP, envisagez de le module Secure Site au lieu de modifier .htaccesset créer un fichier .htpasswd.C'est un processus sujet aux erreurs, tandis que Secure Site vous fournit un formulaire que vous pouvez utiliser pour taper un chemin que vous souhaitez exclure de la sécurisation.Mieux encore, il utilise le système d'authentification Drupal, vous pouvez donc refuser / autoriser les personnes à accéder au site en fonction des rôles et des autorisations Drupal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top