Создайте модуль и вставьте следующий код в файл модуля:
<?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;
}
При этом используется HTTP-аутентификация и проверяется база данных Drupal на правильное имя пользователя и пароль.
Если у вас возникли проблемы с PHP CLI, Drush или cron, вы можете добавить в код следующий код:
// 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;
}
}
Если вы используете Drupal 7, модуль Shield доступен для этой цели. Он аутентифицирует одного общего пользователя и пароль.
источник
Добавьте
mod_auth
к настройке apache. Это зависит от вашего хоста (Linux, Windows). Это может включать в себя загрузку модуля, это может включать просто раскомментирование строки в вашем httpd.confСоздайте файл .htpasswd, используя
htpasswd
команду в папке apache binariesДобавьте следующий код в свое
<DIRECTORY>
заявление сразу после правила перезаписи чистых URL:Перезапустите Apache. Прибыль.
источник
.htaccess
файлу в корне drupal? Я не уверен на 100%, но вы можете попробовать поставить его там. Имейте в виду, решение Барта кажется намного лучше :)Используйте HTTP-аутентификацию. Как это делается с помощью Apache, описано на http://httpd.apache.org/docs/2.2/howto/auth.html . Для многосайтовой установки раздел <Directory> <VirtualHost> будет подходящим местом для размещения директив конфигурации.
источник
ОП прокомментировал, что это на виртуальном хостинге. Большинство виртуальных хостингов предоставляют cPanel или какую-либо другую панель управления, которая обеспечивает простую защиту паролем .htaccess для каталогов.
С помощью этого метода я защитил каталог верхнего уровня разрабатываемого сайта. Если вы используете cPanel для защиты каталога, найдите пункт меню «Защита паролем каталогов».
Если вы защищаете каталог верхнего уровня перед установкой Drupal, cPanel создаст файл .htaccess в этом каталоге. Добавьте или добавьте содержимое этого файла вместе с файлом .htaccess, который предоставляет Drupal. Если вы защищаете каталог после установки Drupal, я уверен, что cPanel просто добавит необходимые строки в существующий файл .htaccess Drupal и не будет мешать остальной части файла. Просто убедитесь, что вы сохранили эти строки, если вы замените файл .htaccess во время обновления Drupal.
источник