Apache是目前流行的Web服务器,可运行在Linux、Unix、Windows等操作系统下,它可以很好地解决“用户名+密码”的认证问题。Apache用户认证所需要的用户名和密码有两种不同的存贮方式:一种是文本文件;另一种是Oracle、MySQL等数据库。下面以Linux的Apache为例,介绍如何实现用户认证功能。

1.实验环境centos7.4配置好yum源:

yum -y install httpd  #利用yum一键安装httpd

修改Apache的配置文件/etc/httpd/conf/httpd.conf,对需要认证的资源所在的目录进行配置。具体配置如下:

vim /etc/httpd/conf/httpd.conf

  <Directory "/var/www/html">
  Options Indexes FollowSymLinks
  Allowoverride authconfig
  Order allow,deny
  Allow from all
  </Directory>
其中,Allowoverride authconfig一行表示允许对/var/www/html目录下的内容进行用户认证

2.在限制访问目录/var/www/html下创建文件.htaccess,其内容如下:

  vim /var/www/html/.htaccess   内容如下:

  AuthName "提示信息"
  AuthType basic
  AuthUserFile  /var/www/html/members.txt

  require valid-user

  

  说明:.htaccess文件中常用的配置选项有以下几个:
  1) AuthName:定义提示信息,用户访问时提示信息会出现在认证的对话框中
  2) AuthType:定义认证类型,在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5
  3) AuthUserFile:定义包含用户名和密码的文本文件,每行一对
  4) AuthGroupFile:定义包含用户组和组成员的文本文件。组成员之间用空格分开,如:group1:user1 user2
  5) require命令:定义哪些用户或组才能被授权访问。如:
  require user user1 user2 (只有用户user1和user2可以访问)
  requires groups group1 (只有group1中的成员可以访问)
  require valid-user (在AuthUserFile指定的文件中的所有用户都可以访问)
 3.利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文件:/var/www/html/members.txt

  htpasswd -bc /var/www/html/members.txt damao 123456  #第一次添加用户时member.txt文件不存在,需要用-c选项创建文件

  htpasswd -b /var/www/html/members.txt wyy abcdef

  

  重启服务进行访问测试:

  

  这种方法对用户的认证比较省事,维护工作也简单。但是在用户数量有数万人,甚至数十万人时,会在查找用户上花掉一定时间,从而降低服务器的效率,这种情况应采用数据库方式进行用户验证。

 
Logo

更多推荐