Cree un módulo y pegue el siguiente código en su archivo de módulo:
<?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;
}
Esto utiliza la autenticación HTTP y verifica la base de datos de Drupal para un nombre de usuario y contraseña válidos.
Si tiene algún problema con PHP CLI, Drush o cron, puede agregar el siguiente código en el enlace:
// 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 está utilizando Drupal 7, el módulo Shield está disponible para este propósito. Autentica un usuario y contraseña únicos y compartidos.
fuente
Agregar
mod_auth
a la configuración de apache. Esto varía según su host (Linux, Windows). Esto puede implicar la descarga de un módulo, puede implicar simplemente descomentar una línea en su httpd.confCree un archivo .htpasswd, usando el
htpasswd
comando en la carpeta binarios de apacheAgregue el siguiente código a su
<DIRECTORY>
estado de cuenta justo después de que su URL limpia reescriba la regla:Reiniciar apache. Lucro.
fuente
.htaccess
archivo en drupal root? No estoy 100% seguro, pero puedes intentar ponerlo allí. Eso sí, la solución de Bart parece mucho mejor :)Utiliza la autenticación HTTP. Cómo se hace esto con Apache se documenta en http://httpd.apache.org/docs/2.2/howto/auth.html . Para una instalación multisitio, la sección <Directory> de <VirtualHost> sería un lugar apropiado para colocar las directivas de configuración.
fuente
El OP ha comentado que esto es en alojamiento compartido. La mayoría de los alojamientos compartidos proporcionan cPanel o algún otro panel de control, que hará una simple protección de contraseña .htaccess para directorios.
He protegido el directorio de nivel superior de un sitio en desarrollo utilizando este método. Si utiliza cPanel para proteger el directorio, busque el elemento de menú "Proteger directorios con contraseña".
Si protege el directorio de nivel superior antes de instalar Drupal, cPanel creará un archivo .htaccess en ese directorio. Agregue o anteponga el contenido de ese archivo con el archivo .htaccess que proporciona Drupal. Si protege el directorio después de instalar Drupal, estoy bastante seguro de que cPanel simplemente agregará las líneas que necesita al archivo .htaccess de Drupal existente y no perturbará el resto del archivo. Solo asegúrese de conservar esas líneas si reemplaza el archivo .htaccess durante una actualización de Drupal.
fuente