Utwórz moduł i wklej następujący kod w pliku modułu:
<?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;
}
Korzysta z uwierzytelniania HTTP i sprawdza bazę danych Drupal pod kątem prawidłowej nazwy użytkownika i hasła.
Jeśli masz jakiekolwiek problemy z PHP CLI, Drush lub cron, możesz dodać następujący kod w haku:
// 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;
}
}
Jeśli używasz Drupala 7, moduł Osłony jest dostępny do tego celu. Uwierzytelnia pojedynczego, wspólnego użytkownika i hasło.
źródło
Dodaj
mod_auth
do konfiguracji Apache. Zależy to od twojego hosta (Linux, Windows). Może to obejmować pobranie modułu, może wymagać jedynie odkomentowania linii w pliku httpd.confUtwórz plik .htpasswd za pomocą
htpasswd
polecenia w folderze plików binarnych apacheDodaj następujący kod do
<DIRECTORY>
wyciągu zaraz po regule przepisywania czystych adresów URL:Uruchom ponownie apache. Zysk.
źródło
.htaccess
pliku w katalogu głównym drupal? Nie jestem w 100% pewien, ale możesz spróbować go tam umieścić. Pamiętaj, że rozwiązanie Barta wydaje się o wiele lepsze :)Użyj uwierzytelniania HTTP. Jak to się robi z Apache, jest udokumentowane na stronie http://httpd.apache.org/docs/2.2/howto/auth.html . W przypadku instalacji wielostanowiskowej odpowiednie byłoby umieszczenie sekcji <Directory> w <VirtualHost> .
źródło
OP skomentował, że dotyczy to hostingu współdzielonego. Większość hostingu współdzielonego zapewnia cPanel lub inny panel sterowania, który zapewni proste zabezpieczenie hasłem .htaccess dla katalogów.
Za pomocą tej metody zabezpieczyłem katalog najwyższego poziomu tworzonej witryny. Jeśli używasz cPanel do ochrony katalogu, poszukaj punktu menu „Katalog chroniony hasłem”.
Jeśli chronisz katalog najwyższego poziomu przed instalacją Drupala, cPanel utworzy plik .htaccess w tym katalogu. Dołącz lub dołącz zawartość tego pliku za pomocą pliku .htaccess, który zapewnia Drupal. Jeśli zabezpieczysz katalog po zainstalowaniu Drupala, jestem całkiem pewien, że cPanel po prostu doda potrzebne linie do istniejącego pliku .htaccess Drupala i nie zakłóci reszty pliku. Upewnij się, że zachowałeś te linie, jeśli zastąpisz plik .htaccess podczas aktualizacji Drupal.
źródło