Créez un module et collez le code suivant dans votre fichier de module:
<?php
/**
* Implementation of hook_boot().
*
* Ask for user credentials and try to authenticate.
*/
function foo_boot() {
require_once DRUPAL_ROOT . '/includes/password.inc';
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
$query = "SELECT pass FROM {users} WHERE name = :name";
$result = db_query($query, array(':name' => $_SERVER['PHP_AUTH_USER']));
$account = new stdClass();
foreach ($result as $row) {
$account->pass = $row->pass;
}
if (isset($account->pass)) {
if (user_check_password($_SERVER['PHP_AUTH_PW'], $account)) {
return;
}
}
}
header('WWW-Authenticate: Basic realm="Development"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
Cela utilise l'authentification HTTP et vérifie la base de données Drupal pour un nom d'utilisateur et un mot de passe valides.
Si vous avez des problèmes avec PHP CLI, Drush ou cron, vous pouvez ajouter le code suivant dans le hook:
// Allow cron through
if (basename($_SERVER['PHP_SELF']) == 'cron.php') {
return;
}
// Allow PHP CLI/Drush through
if (isset($_SERVER['argc'])) {
if (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)) {
return;
}
}
Si vous utilisez Drupal 7, le module Shield est disponible à cet effet. Il authentifie un seul utilisateur et mot de passe partagés.
la source
Ajoutez
mod_auth
à la configuration d'Apache. Cela varie en fonction de votre hôte (linux, windows). Cela peut impliquer le téléchargement d'un module, cela peut impliquer de simplement décommenter une ligne dans votre httpd.confCréez un fichier .htpasswd à l'aide de la
htpasswd
commande du dossier des fichiers binaires apacheAjoutez le code suivant à votre
<DIRECTORY>
relevé juste après votre règle de réécriture des URL propres:Redémarrez apache. Profit.
la source
.htaccess
fichier en racine drupal? Je ne suis pas sûr à 100%, mais vous pouvez essayer de le mettre là-dedans. Attention, la solution de Bart semble bien meilleure :)Utilisez l'authentification HTTP. La façon dont cela est fait avec Apache est documentée à http://httpd.apache.org/docs/2.2/howto/auth.html . Pour une installation multisite, la section <Directory> de <VirtualHost> serait un endroit approprié pour placer les directives de configuration.
la source
Le PO a indiqué qu'il s'agissait d'un hébergement partagé. La plupart des hébergements partagés fournissent cPanel ou un autre panneau de contrôle, qui fera une simple protection par mot de passe .htaccess pour les répertoires.
J'ai protégé le répertoire de niveau supérieur d'un site en développement en utilisant cette méthode. Si vous utilisez cPanel pour protéger le répertoire, recherchez l'élément de menu "Password Protect Directories".
Si vous protégez le répertoire de niveau supérieur avant d'installer Drupal, cPanel créera un fichier .htaccess dans ce répertoire. Ajoutez ou ajoutez le contenu de ce fichier au fichier .htaccess fourni par Drupal. Si vous protégez le répertoire après avoir installé Drupal, je suis presque sûr que cPanel ajoutera simplement les lignes dont il a besoin au fichier Drupal .htaccess existant et ne dérangera pas le reste du fichier. Assurez-vous simplement de conserver ces lignes si vous remplacez le fichier .htaccess lors d'une mise à niveau Drupal.
la source