|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。6 x& X0 a1 V6 ?' b9 W
! Y+ b4 f9 P; q" m9 y# U6 y6 H方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。, L: C0 o3 K" _) K+ J+ \
假设Apache的web根目录为 d:/home,对应URL为 http://localhost/8 ?2 q5 c- @3 k- W1 u
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
+ d; P% s. W9 Q2 T# Ad:/users目录用来存放密码文件 user.passwd' ]6 h! U; S( ?5 v) S; m
+ a- k: c: t4 L$ w2 M& \2 ^
1、制作用户密码文件$ G f6 H \0 y' C: l" v: G" t
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。
t, j4 p# u* b' B# m3 g/ U3 A, YD:\apache\bin>htpasswd -bc d:/users/user.passwd user1 1234566 i6 C1 d; |$ q9 m) t# G
这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/6 [7 ` y5 I. t R: h2 u3 n
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
; a# N1 }$ u; SD:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456+ ?/ O6 Z6 G5 S7 ]+ Y8 d' j6 o
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456 m; {9 o8 k" s% x9 U2 m3 i: t% s
; G" t# `7 \# T7 s2 r6 O
好了,当添加完用户,就可以着手实现用户验证了。
6 y* z% V! e- |% Q; @5 I, I$ T+ z; y% ]4 t7 r$ D1 L
2、制作访问验证文件 .htaccess4 W+ t# u R# l E) T* x
打开记事本,输入以下文字:
; m- z& a, Y. b6 o, c+ c2 @9 a2 F% u
authtype basic1 v" n! G3 q" a K V
authname "www.home.net"
/ f+ n+ ~& J- N+ [; C. a* m( O/ ]authuserfile d:/users/users.passwd3 s, U; d8 W9 A: ?
require user user1
$ ?0 ?; _, J. s& X; Y' G$ P$ k
& j* p2 j$ L q: c7 m然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。
) d9 M: ~+ r) k' r6 X
; ?8 ]. y/ @' Y# m/ D, w到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。
# S; B" C2 O4 M3 K2 y" D& ]
4 N% K8 d% s$ K" o3、实现指定某几个用户对一个目录的验证# O" e" d! z9 ?
例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:! [$ j' d8 J' u- h: x' H
require user user1
4 M% {, [/ V2 o: [- ?3 p改为:
7 z* C6 _. G% m: A/ Qrequire user user1 user3/ E) ~6 L, a% e) s3 l
如此就实现了 http://localhost/test/ 只能由user1和user2访问
2 j: W' u' w$ N* b7 Z' n; u1 v }2 J/ N6 [3 T7 f
4、实现所有合法用户对一个目录的验证5 k& ~7 T+ a+ N# @4 _
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : ( O9 Q G6 H( `3 o) c
8 l; s' X& D) f* K2 hrequire valid-user
) ?6 Z7 v8 x2 P/ k1 L. z) i& K( t/ q5 M/ ~+ c9 W: t+ {! ]; _$ N
就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
9 D* I9 E, X' ?0 m: {: t7 _# D; R, ^+ w" p% e+ g' V7 O0 d
方法二:采用群组用户方式实现验证
h" H9 E6 G- B) z要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)8 \" q" O/ T! a+ w( ~
1、建立一个用户组文件 d:/users/user.group ,内容如下:
4 _8 b. i& M5 S6 J8 V; e. o! Z# s' P
manager:user1 user3
6 j, l* d8 ]% |game:user2 user4
* r! s m" U% c, ydownload:user5 user6 user7
# `7 A/ _, ]/ M; ^+ n C* w( |3 R' h. k3 @
如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。8 u+ s/ L2 Q9 r( f% n- m) o
7 O( x3 R( K5 ?3 {2、实现某组用户能访问 http://localhost/test/
! x0 P; s/ F) J6 S M6 ~/ V) ?编辑 d:/home/test/.htaccess 文件,内容如下:) V, q1 l0 x* \" x
( ]; r7 K2 A) z+ w+ l X
authtype basic3 D1 D w5 q9 B; k
authname "www.home.net"
4 f9 j! ]3 I; e. |& fauthuserfile d:/users/users.passwd
j; f, p0 P! _: O' ~6 @$ k& `authgroupfile d:/users/user.group2 T, X1 D2 @ o4 u( v7 C
require group game
9 t4 c( |, a3 i4 l% d
; E3 x& B2 k- z% i" Q那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。% O3 b- U; M7 N+ k! c* y/ i4 ?" A* I
5 g% o& G3 n o; n% c2 m, D6 z
以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。0 L+ F a/ b- b& w0 p( j
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。1 k0 U- O$ _7 A
实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|