apache在虚拟主机中实现用户验证

##两种方法

方法一

虚拟主机配置文件中,需要加入 <Directory /data/web/test> AllowOverride AuthConfig

然后在虚拟主机的主目录,即DocumentRoot 目录下 vi /data/web/test/.htaccess

加入 AuthName “frank share web” AuthType Basic 这种要重启 下面的那种不需要重启 AuthUserFile /data/web/test/.htpasswd require valid-user

保存后,然后 创建apache的验证用户

htpasswd -c /data/web/test/.htpasswd test #第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数

如果你想修改密码,可以如下

htpasswd -m .htpasswd test2

重启apache,即可。

方法二

到此,你已经配置完成。下面介绍另一种方式: ################################## vi http.conf 在相应的虚拟主机配置文件段,加入 <Directory *> AllowOverride AuthConfig AuthName “自定义的” AuthType Basic AuthUserFile /data/.htpasswd // 这个目录你可以随便写一个,没有限制 require valid-user

保存后,然后 创建apache的验证用户

htpasswd 默认创建的密码只有前8位有效

按照如下命令创建密码 htpasswd -c .htpasswd user1 假如,密码为123456789 那么访问时,不管是输入 12345678 还是 123456789 甚至是 123456781234 都能顺利通过验证。这是为什么呢? htpasswd默认情况,是使用系统库中的crypt()函数来对密码明文进行单向加密的。在网上找到该函数的说明: crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码,key字符串长度仅取前8个字符,超过此长度的字符没有意义。参数salt为两个字 符组成的字符串,由a-z,A-Z,0-9,".",和"/“所组成,用来决定使用4096种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key所指的字符串不会有所更动。编码过的字符串长度为13个字符,前两个字符为参数salt代表的字符串。

所以,如果你想创建超过8位的密码,请使用-m参数或者-s 参数,这两个参数分别表示创建的密码以MD5加密方式加密和以SHA方式加密。 htpasswd -c -m .htpasswd user1 这样创建的密码没有8位数限制了。