|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。
: O; U; R. }1 A0 q, D- G+ ]! J" K' M3 A: \
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。3 _- B5 M" D4 K/ [' z, g
假设Apache的web根目录为 d:/home,对应URL为 http://localhost/( Z! e z9 u& O* ~, T
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
: o. k+ f* l8 z7 Q0 }* J: s, Q) ad:/users目录用来存放密码文件 user.passwd
' S: K; \* `3 v* n4 |1 J, {+ q
- y( [' I0 T; h; Q" L% T: m1、制作用户密码文件3 B# e/ }/ y( n9 m d- U' {* H
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。
1 a, E% C5 p9 }3 u2 H, j- M. ^% UD:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456
. n2 |. @: E/ g; P- Q这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/) o @2 c0 f9 ] G6 x; L
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
( ?! R- o0 v3 T8 t: q1 RD:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456, O( G: b" S" H* ~5 }! p: P
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 1234560 V9 q( B( R; J, f1 Q" Q
& g# _) g7 \1 C, w' G3 [0 ?好了,当添加完用户,就可以着手实现用户验证了。; k+ h- G8 H) U) q2 N' q0 T
( n6 Z- I. s) e5 p
2、制作访问验证文件 .htaccess' `$ k m3 u& ]5 t( v. }; v
打开记事本,输入以下文字:
) m. I' F7 M( l# S/ F. W, m3 f- y, ]0 M: r7 d/ h
authtype basic
' t/ n' K& e; ~- d, K/ }' Hauthname "www.home.net"% S( z" U/ H/ Y/ V6 C! a m
authuserfile d:/users/users.passwd
( c3 s: \: ]1 q0 Y0 e# p4 ~) hrequire user user16 L8 m& G) b& T
$ d7 o9 }- @' M! f1 L( L! v
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。
5 j/ q( [7 i1 F$ }
* t. D8 { `' K+ A到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。
1 x9 ?3 ^. Y1 p( W7 O+ s8 G4 W' C( @
3、实现指定某几个用户对一个目录的验证3 e8 p. f9 k! Z+ ^
例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:
7 \" I. C! p- ?require user user1
3 M. a+ h1 h9 P6 w5 v改为:
+ C9 S! h$ v+ U+ Y+ Orequire user user1 user3
* p' G! Y8 j5 _6 T3 M& y* I如此就实现了 http://localhost/test/ 只能由user1和user2访问# h0 O7 W/ \. d' m. ~9 J f2 ]
/ z9 I- ]; @/ U! B) c0 u/ |
4、实现所有合法用户对一个目录的验证0 h+ d4 d! x9 S3 I/ z
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 :
* Q) E" Q% X+ q4 R6 Y
& j& n3 _# T/ `0 y8 F& hrequire valid-user. P4 u8 ~9 W8 O( n% F% N" v ?
. N1 n( A4 |+ K7 m0 f; S就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
3 y+ e& \0 a6 u/ E
1 s1 B7 S1 u U6 l$ c方法二:采用群组用户方式实现验证
6 t" X/ N2 ]0 u要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
+ T! r% f, M0 b6 E1 y1、建立一个用户组文件 d:/users/user.group ,内容如下:5 {# V7 v A1 c! C
6 y! G3 ~$ d T, p6 `manager:user1 user3
/ ^6 c- B" U9 o/ Qgame:user2 user4
2 e- n! {" ?5 Y, Y8 y7 {1 V7 Xdownload:user5 user6 user7
& B6 ~8 D9 J' l& y m$ @
! Z I' @: V6 W% `0 h5 i: @. Q如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。0 |, F: |* n) ?( T) q! \; A4 @5 J
1 Q7 H: Z+ f! |2、实现某组用户能访问 http://localhost/test/4 @' q3 ^4 r& a \4 }
编辑 d:/home/test/.htaccess 文件,内容如下:
3 W8 X* z( [9 P/ K6 }7 F' G4 A
% L- }; \% Y; w( |" i) `6 v* P5 V3 Hauthtype basic* o/ O4 [+ N$ t& k# ^* b
authname "www.home.net"
, q; e+ C) m" y. T6 z* j/ W6 p0 Tauthuserfile d:/users/users.passwd
" X. k+ E, O0 G: G" [) a% K" H7 l, sauthgroupfile d:/users/user.group9 \! J: k. ?. t
require group game& p8 z1 \1 U9 `* n( x# @1 }5 {
5 C. Z% R- N5 x那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。
9 h$ f/ a( B( G$ p* W. y' C4 J5 c0 J6 k' U# b5 b. g
以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。
" D( h1 E5 C) U, i0 r至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
: [ G) [8 U1 i. m( g( Z实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|