当前位置: 首页>>技术解读>>正文


如何在开发期间限制对站点的访问?

webfans 技术解读 , , 去评论

问题描述

我正在创建一个新的基于Drupal 7的站点。

开发将在可公开访问的服务器上。我在multi-site环境中工作。

我想完全阻止任何人访问该网站&除了授权用户之外包括访问网站名称,主题等…

之前我使用Secure Site进行类似的任务。它执行了http-level身份验证,并在身份验证失败时返回403。它没有D7版本。

最简单的方法是什么?

最佳解决方案

制作一个模块并在模块文件中粘贴以下代码:

<?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模块可用于此目的。它验证单个共享用户和密码。

PHP Authentication shield. It creates a simple shield for the site with Apache authentication. It hides the sites, if the user does not know a simple username/password. It handles Drupal as a “walled garden”. This module helps you to protect your (dev) site with HTTP authentication.

第三种解决方案

mod_auth添加到apache设置。这取决于您的主机(Linux,Windows)。这可能涉及下载模块,它可能只涉及取消注释httpd.conf中的一行

 LoadModule auth_basic_module modules/mod_auth_basic.so

使用apache二进制文件夹中的htpasswd命令创建.htpasswd文件

 htpasswd -c user pass

在干净的URL重写规则之后立即将以下代码添加到<DIRECTORY>语句中:

AuthType Basic
AuthName "My Auth"
AuthUserFile \path\to\.htpasswd
Require valid-user

重启apache。利润。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2277.html,转载请务必附带本地址声明。