经常会看到这种现象,看下图
apache 页面访问控制
为什么要进行这样的控制呢,给不同的人看不同的东西,对信息进行保护,虽然这种保护比较低级,多多少少还是有点用的。
一,用htpasswd命令,产生权限控制文件
- [zhangy@BlackGhost test]$ htpasswd -c ./access tank
- New password:
- Re-type new password:
- Adding password for user tank
- [zhangy@BlackGhost test]$ cat access
- tank:Uj5B3qIF/BNdI
[zhangy@BlackGhost test]$ htpasswd -c ./access tank //生成一个密码文件 ,-c是新建一个文件 htpasswd -h可查看
New password: //提示输入密码
Re-type new password: //重复密码
Adding password for user tank
[zhangy@BlackGhost test]$ cat access //查看一下密码文件
tank:Uj5B3qIF/BNdI //用户名是明文的,密码是加密的。
到这儿密码文件是生成好了。
二,页面访问控制方法
1,能过修改httpd.conf或者是httpd-vhosts.conf来进行配置
- listen 10004
- NameVirtualHost *:10004
- <VirtualHost *:10004>
- DocumentRoot "/home/zhangy/www/test"
- ServerName *:10004
- BandwidthModule On
- ForceBandWidthModule On
- Bandwidth all 1024000
- MinBandwidth all 50000
- LargeFileLimit * 500 50000
- MaxConnection all 2
-
- ErrorLog "/home/zhangy/apache/blog.51yip.com.com-error.log"
- CustomLog "/home/zhangy/apache/blog.51yip.com-access.log" common
-
- <Directory /home/zhangy/www/test>
- AuthType Basic
- AuthName "access test"
- AuthUserFile /home/zhangy/www/test/access
- Require valid-user
- </Directory>
-
- </VirtualHost>
listen 10004
NameVirtualHost *:10004
<VirtualHost *:10004>
DocumentRoot "/home/zhangy/www/test"
ServerName *:10004
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 1024000
MinBandwidth all 50000
LargeFileLimit * 500 50000
MaxConnection all 2
ErrorLog "/home/zhangy/apache/blog.51yip.com.com-error.log"
CustomLog "/home/zhangy/apache/blog.51yip.com-access.log" common
//看一下,下面的配置
<Directory /home/zhangy/www/test>
AuthType Basic
AuthName "access test"
AuthUserFile /home/zhangy/www/test/access
Require valid-user
</Directory>
</VirtualHost>
2,我们可以利用.htaccess文件来进行控制
在test的根目录下面建一个.htaccess的文件
- [zhangy@BlackGhost test]$ vi .htaccess
- [zhangy@BlackGhost test]$ cat .htaccess
- AuthType Basic
- AuthName "access test"
- AuthUserFile /home/zhangy/www/test/access
- Require valid-user
[zhangy@BlackGhost test]$ vi .htaccess //打开个文件 ,添加权限内容
[zhangy@BlackGhost test]$ cat .htaccess //下面就是.htaccess的内容
AuthType Basic
AuthName "access test"
AuthUserFile /home/zhangy/www/test/access
Require valid-user
如果要给很多人设置不同的用户名和密码,使用AuthGroupFile设置选项 比较方便
3,不用密码文件,也可以进行访问控制
- define( 'ADMIN_USERNAME' , 'tank' );
- define('ADMIN_PASSWORD' , 'tank' );
-
-
- if (!isset( $_SERVER [ 'PHP_AUTH_USER' ]) || !isset( $_SERVER [ 'PHP_AUTH_PW' ]) ||
- $_SERVER [ 'PHP_AUTH_USER' ] != ADMIN_USERNAME || $_SERVER [ 'PHP_AUTH_PW' ] != ADMIN_PASSWORD) {
- Header("WWW-Authenticate: Basic realm=/"access test/"" );
- Header("HTTP/1.0 401 Unauthorized" );
-
- echo <<<EOB
- <html><body>
- <h1>Rejected!</h1>
- <big>Wrong Username or Password!</big>
- </body></html>
- EOB;
- exit ;
- }
define('ADMIN_USERNAME','tank'); // Admin Username
define('ADMIN_PASSWORD','tank'); // Admin Password
//log check
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
$_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
Header("WWW-Authenticate: Basic realm=/"access test/"");
Header("HTTP/1.0 401 Unauthorized");
echo <<<EOB
<html><body>
<h1>Rejected!</h1>
<big>Wrong Username or Password!</big>
</body></html>
EOB;
exit;
}
上面用的是php的方法,其他语言我想也有。您可以把上面的这段代码写成一个文件,进行共用包涵,也可以把它封装到底基,这样不管访问什么页面,都可以进行访问控制。
收藏、分享这篇文章!
转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/apachenginx/1051.html