|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。: ]% w e0 [7 Z: V- L1 w% E
| ]; [2 O3 ~ c' O' R
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
4 H- c" v- V! m. L s1 F假设Apache的web根目录为 d:/home,对应URL为 http://localhost/. d2 T* [/ |5 ^& R$ i
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。1 j8 r. p( s/ D8 Y
d:/users目录用来存放密码文件 user.passwd$ b' V3 H% z: v/ B* z* M
* ^- z: S5 }/ X, T5 @% F K1、制作用户密码文件+ ^( I+ U+ X+ h. k8 {% z
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。, N- p7 Z- t6 b+ R8 [2 X
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456$ _2 I9 v; W! F! y
这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/
3 k! D1 L4 A; c成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:! d9 n* x7 ~; T0 p0 ~# R
D:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456' R9 v* F- D: i' {( E g9 ~" O
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
8 k, c& R; ^! u( A; t$ L, a. a0 ]! w u+ F4 p
好了,当添加完用户,就可以着手实现用户验证了。0 ^7 {: X! w% u5 `' ~
; ?! Z% x5 l0 d# y1 B# C2、制作访问验证文件 .htaccess
7 g- b- T6 y, a2 M1 T6 e- Y' y* ]2 L打开记事本,输入以下文字:" |# m; M5 ` q" X( V
5 l% m+ h; L- p5 X* S
authtype basic1 r6 n: E" {" l) u% @& I
authname "www.home.net" x5 z0 U. m+ ~8 b% @. D, r
authuserfile d:/users/users.passwd
7 d6 w% e+ f" Brequire user user14 l1 [8 e8 ]' C) [. t
, u' k# W' C$ P4 J6 P' [
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。% N9 O, U5 ^ S7 p" H! T
# T3 S% ~5 z7 ~( y
到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。, H( b" w! [( L0 M$ o
" b# @- M9 v+ N/ u% H, o
3、实现指定某几个用户对一个目录的验证
9 |' v- ^) _2 P5 R3 g$ [2 P例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:1 [$ Q4 n7 n5 @# g" @: U9 D% G" K
require user user14 F( }2 m% T- Q( `+ ~/ }% V F
改为:* z1 I/ F! Y3 G% N* h4 v$ y' f
require user user1 user3% t R: d4 _5 J M8 D
如此就实现了 http://localhost/test/ 只能由user1和user2访问
* k: o3 c1 w; n2 a/ C( N7 v$ {. p
4、实现所有合法用户对一个目录的验证
/ u/ O( U; U7 a. J. ~' X例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 :
$ y& y6 @, S7 ^6 u N: g; x+ K# S) _+ B) y. l) W7 S
require valid-user7 S" A/ w& n2 Y& g) d/ d5 D
T4 [; T3 o% E/ c# k. ]
就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
' J0 d( Q- H5 V7 J3 ~) O* z$ t. G9 k" m1 Q+ W. ~1 I5 j
方法二:采用群组用户方式实现验证
/ ?8 G$ U! D2 X& _8 {0 B要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
" s1 K' P, v v5 F' T1、建立一个用户组文件 d:/users/user.group ,内容如下:* S% O3 k0 I0 C, O7 M" A3 e+ m' J. e% x
+ J6 F6 ^ X+ d* U2 [manager:user1 user3: Q% ^: g7 A6 a1 `" Z Z
game:user2 user4+ Y, t3 T1 m6 x- G- X2 ~: z
download:user5 user6 user7& Q. y2 m' y4 A/ g( P2 y
" C: E' H% U9 P# x1 i- E6 i如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。2 L8 o' w" l: u/ }/ V4 Q. {
( x2 g: Q) j' ^2 [2、实现某组用户能访问 http://localhost/test/' Q+ i8 K4 K5 u# T6 ~& `& o
编辑 d:/home/test/.htaccess 文件,内容如下:, h1 I% O D4 o, ~9 Z$ O8 j- R7 H
3 @2 |# R7 W5 F8 Z" t1 r" ~& l
authtype basic
% v( v% V0 p, h2 P$ j# _, hauthname "www.home.net". Q7 z" G* W2 t
authuserfile d:/users/users.passwd% J6 n7 \& M% y7 i
authgroupfile d:/users/user.group5 \# x* C0 A7 s2 x' X/ S
require group game, L6 N0 X9 [" w$ f5 r
, b6 n' a5 J( {8 U4 Z
那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。
) Q$ P0 P$ x3 \4 o2 L+ O; Z
9 d1 t( _4 _! c* m5 }9 q# | P以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。' s& G( ]+ `# j4 F
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
! R9 b$ e0 u4 l, R实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|