通过Apache配置可以限制用户对目录的访问,会弹出像phpadmin一样的登陆框。

===========================================================

1)建立需要保护的目录

①在/usr/local/apache2/htdocs/下建立目录,然后保护,或者②。

②使用别名(httpd-autoindex.php),在系统位置建立目录,然后保护。

在httpd-autoindex.php文件中建立别名目录:

Alias /soft/  "/share/soft"
  <Directory "/share/soft/">
  Options Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

2)修改配置文件的AllowOverride,允许.htaccess权限文件生效

<Directory "/share/soft/">
  Options Indexes FollowSymLinks
  AllowOverride All #开启权限认证文件.htaccess
  Order allow,deny
  Allow from all
</Directory>

 

3)在指定目录建立权限文件

cd  /share/soft

vim  .htaccess

#加入下边的四句话(不区分大小写)。
AuthName "input your pwd" #提示信息,会显示在弹出的密码框中,可以修改。
AuthType basic #加密类型
AuthUserFile /share/soft/apache.passwd #密码文件,文件名和位置自定义。(最好不要定义在soft/目录下,因为 “Options Indexes”,会看到密码文件)
require valid-user #允许密码文件中所有用户访问

4)建立密码文件,加入允许访问的用户。

/usr/local/apache2/bin/htpasswd  -c  /share/soft/apache.passwd  test1
//此命令后会提示输入密码,-c表示建立密码文件,只有添加第一个用户时,才能-c //再添加用户用-m
/usr/local/apache2/bin/htpasswd -m /share/soft/apache.passwd test2

访问www.xxx.com/soft/时会提示:

5)不通过.htaccess权限文件配置,即直接在配置文件中配置权限也可以,就省略了3步,修改2步如下

<Directory "/share/soft/">
Options Indexes Includes FollowSymLinks
   Order allow,deny
   Allow from all
AllowOverride None
AuthUserFile /usr/share/monitorix/.passwd #就是把这四句话直接加到下边
AuthName "input your pwd"
AuthType Basic
Require valid-user
</Directory>

6)需要验证的页面通过curl抓取

 //虚拟机地址,这里url直接写虚拟机配置的host域名会导致curl报错,找不到host。
//需要先写IP,然后在设置一个Host选项
$url = 'http://192.168.31.174:80';
$param = array('content'=>'fdipzone blog'); //post的数据 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Host: kwht.com")); //这里制定host名称
curl_setopt($ch, CURLOPT_USERPWD, 'asd:asd'); // http auth
$ret = curl_exec($ch);
if (false === $ret) {
echo "curl_error".curl_error($ch);
}
$retinfo = curl_getinfo($ch);
curl_close($ch); if($retinfo['http_code']==200){
$data = json_decode($ret, true);
print_r($data);
}else{
echo 'POST Fail';
}

7)不通过修改配置和文件+生成密码文件的方式配置

服务端可以通过判断$_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']验证账号和密码

把下边的代码加入到index.php,可以不用修改配置文件也不用生成密码文件而是通过PHP提供的$_SERVER变量来验证

<?php
if(!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="localhost"'); //头部返回这行就会弹出登陆框
header("HTTP/1.0 401 Unauthorized");
exit;
}else{
if (($_SERVER['PHP_AUTH_USER']!= "asd" || $_SERVER['PHP_AUTH_PW']!="asd")) {
header('WWW-Authenticate: Basic realm="localhost"');
header("HTTP/1.0 401 Unauthorized");
exit;
}
}

//验证通过才到这里来
$content = isset($_POST['content'])? $_POST['content'] : '';
header('content-type:application/json');
echo json_encode(array('content'=>$content));
?>

Apache配置--用户认证(针对目录访问)-update2015-05-02的更多相关文章

  1. Linux服务器---配置apache支持用户认证

    Apache支持用户认证 为了服务器的安全,通常用户在请求访问某个文件夹的时候,Apache可以要求用户输入有效的用户名和登录密码 1.创建一个测试目录 [root@localhost cgi-bin ...

  2. nginx 配置用户认证

    nginx 配置用户认证有两种方式: 1.auth_basic 本机认证,由ngx_http_auth_basic_module模块实现.配置段: http, server, location, li ...

  3. SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  4. apache 配置用户级目录

    如果你只需要在用户目录下使用apache的话,还有一个最简单的方式,直接将 httpd.conf文件下的 DocumentRoot "/Library/WebServer/Documents ...

  5. apache的用户认证

    1. 限制用户访问的方式: 1. 限制访问服务的客户端主机 2. 需要用户名和密码 2. 行为用户验证需要两步: 1. 创建一个包含用户名和密码的文件 2. 服务器上的哪些资源需要保护,哪些用户可以进 ...

  6. nginx配置用户认证

    location ~ .*admin\.php$ {             auth_basic "weifenglinux auth";             auth_ba ...

  7. LNMP配置——Nginx配置 —— 用户认证

    一.配置 再来创建一个新的虚拟主机 #cd /usr/local/nginx/conf/vhost #vi test.com.conf 写入: server { listen 80; server_n ...

  8. apache配置多个虚拟目录站点

    错误的做法 网上查了几个资料,做法如下:比如想配置两个www.web1.com  www.web2.com站点 打开httpd.conf ,然后添加: <VirtualHost *:80> ...

  9. The requested URL / was not found on this server——Apache配置虚拟域名后无法访问localhost

    今天为了做项目,在Apache中配置了项目域名,成功访问.但是忽然发现要访问localhost突然出现The requested URL / was not found on this server. ...

随机推荐

  1. 使用express4.X + jade + mongoose + underscore搭建个人电影网站

    (-。-;), 周末过得真是快啊,  很久以前就看到imooc上有个搭建个人电影网站一期 ,二期的视频, 这两周宅家里撸玩没事干, 我也学着搭了一个, 这些东西都是基础, 只要花点时间很好学的, no ...

  2. Android消息机制之ThreadLocal的工作原理

    来源: http://blog.csdn.net/singwhatiwanna/article/details/48350919 很多人认为Handler的作用是更新UI,这说的的确没错,但是更新UI ...

  3. 使用jquery.qrcode生成二维码支持logo,和中文

    /* utf.js - UTF-8 <=> UTF-16 convertion * * Copyright (C) 1999 Masanao Izumo <iz@onicos.co. ...

  4. C++ 序列式容器之vector

     什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array,  链表list,  树tree ...

  5. Android studio:Groovy 与 Gradle 基础【三】

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=255064&extra=page%3D2%26filter%3Dautho ...

  6. java.io.IOException: Timed out waiting 20000ms for a quorum of nodes to respond

    16-11-14 21:23:41,540 FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: starting log se ...

  7. TYVJ1982 武器分配

    描述     后勤部队运来一批武器(机枪和盔甲).你要把这些武器分配给手下的marine们(每人一部机枪,一套盔甲).可是问题来了...    这些武器的型号不相同(武器是由出价最低的承包商制造的), ...

  8. Linux下修改进程名称

    catalog . 应用场景 . 通过Linux prctl修改进程名 . 通过修改进程argv[]修改进程名 . 通过bash exec命令修改一个进程的cmdline信息 1. 应用场景 . 标识 ...

  9. dedecms /include/filter.inc.php Local Variable Overriding

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 filter.inc.php这个文件在系统配置文件之后,里面有forea ...

  10. 【问题】R文件报错原因及解决办法 (转)

    错误如图.下面是几种解决方法(网上搜集的). 1.如果是导入项目出现这个问题,一般是R文件没有更新造成(据说导入项目,R不会自动更新).可以Project——clean以下,R文件会重新生成. 2.选 ...