Crie um módulo e cole o seguinte código no seu arquivo 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;
}
Isso usa autenticação HTTP e verifica o banco de dados Drupal quanto a nome de usuário e senha válidos.
Se você tiver algum problema com o PHP CLI, Drush ou cron, poderá adicionar o seguinte código no gancho:
// 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;
}
}
Se você estiver usando o Drupal 7, o módulo Shield estará disponível para esse fim. Ele autentica um único usuário e senha compartilhados.
fonte
Adicionar
mod_auth
à configuração do apache. Isso varia dependendo do seu host (linux, windows). Isso pode envolver o download de um módulo, pode envolver apenas descomentar uma linha no seu httpd.confCrie um arquivo .htpasswd, usando o
htpasswd
comando na pasta binários apacheAdicione o seguinte código à sua
<DIRECTORY>
declaração logo após a regra de reescrita dos URLs limpos:Reinicie o apache. Lucro.
fonte
.htaccess
arquivo na raiz drupal? Não tenho 100% de certeza, mas você pode tentar colocá-lo lá. Mente-lhe, solução de Bart parece muito melhor :)Use autenticação HTTP. Como isso é feito com o Apache está documentado em http://httpd.apache.org/docs/2.2/howto/auth.html . Para uma instalação multisite, a seção <Directory> do <VirtualHost> seria um local apropriado para colocar as diretivas de configuração.
fonte
O OP comentou que isso é em hospedagem compartilhada. A maioria das hospedagem compartilhada fornece cPanel ou algum outro painel de controle, que oferece proteção simples por senha .htaccess para diretórios.
Eu protegi o diretório de nível superior de um site em desenvolvimento usando esse método. Se você usar o cPanel para proteger o diretório, procure o item de menu "Diretórios de proteção por senha".
Se você proteger o diretório de nível superior antes de instalar o Drupal, o cPanel criará um arquivo .htaccess nesse diretório. Anexe ou anexe o conteúdo desse arquivo ao arquivo .htaccess fornecido pelo Drupal. Se você proteger o diretório após a instalação do Drupal, tenho certeza de que o cPanel apenas adicionará as linhas necessárias ao arquivo .htaccess Drupal existente e não perturbará o restante do arquivo. Apenas certifique-se de preservar essas linhas se substituir o arquivo .htaccess durante uma atualização do Drupal.
fonte