|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。8 Z0 @% A6 h- `
" a2 P! p p' V x
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
% E* S4 _4 E: n/ f假设Apache的web根目录为 d:/home,对应URL为 http://localhost/0 g) A6 |5 d' P
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
8 P0 h. c* j z, F, Q5 fd:/users目录用来存放密码文件 user.passwd
4 h; C ?2 ?& C" W, D+ Y% N- W# c! Q9 U( c1 E0 B
1、制作用户密码文件
# E) r) l; h. `7 m在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。
8 P% G$ z6 k& m8 t% z" a2 bD:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456
2 ?: f- u: c9 w: O这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/
2 u9 o5 K, S7 C- B9 M& l成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
: V% d+ L# F1 o: tD:\apache\bin>htpasswd -b d:/users/user.passwd user2 1234563 K/ n B9 O7 n& R1 ~
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
' d% \) l8 I$ N' j5 Q: |% l/ t0 ~
, m' S* i. |7 y" b& _好了,当添加完用户,就可以着手实现用户验证了。
% x4 p) s( p1 _" I' v/ b8 | u# g$ q3 l1 ~
2、制作访问验证文件 .htaccess
" }9 b( `: z% w2 i" f打开记事本,输入以下文字:
9 x% h3 s$ e9 }2 `8 P1 C1 W4 k) d- B* s2 k! c2 }
authtype basic8 l& _ N2 e/ r% R
authname "www.home.net"
0 C) J# b6 G8 m) J# Bauthuserfile d:/users/users.passwd
9 F4 y7 s9 U: E# orequire user user1
0 F* P+ E: {1 k; O% V9 N& ]5 N/ ^2 m! r, |
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。
1 n' b# B( ?/ s. c- U4 [4 ^5 u0 p6 Y/ W" Z8 O
到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。/ A! _, E% E, [' c( m$ N; u
& y0 J6 L5 n1 Z2 E9 a. z
3、实现指定某几个用户对一个目录的验证
6 e) @) x5 }$ p9 ~( f* _2 W3 P8 ]例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:
* }5 g! @1 d1 k& G( b/ [3 Prequire user user1* j2 C. c: G2 R6 s+ F# o6 D
改为:# W& N {2 T' g- p( g! V
require user user1 user3
6 _# o+ a2 c. \0 j: c7 k如此就实现了 http://localhost/test/ 只能由user1和user2访问
* V A9 X. M8 ]. m* t7 |' v; i7 `4 z; V, q8 [
4、实现所有合法用户对一个目录的验证* a1 N: S8 L( t4 \5 A" b
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : 9 t, Q! ^* S$ F. j
/ B x% Z3 k3 u: m4 ^, o) I: drequire valid-user
7 p6 i; @# X" l6 G
3 m+ A; `, X3 q8 `; [0 E就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。7 B- I0 f0 o$ ~6 q Q5 H
. F/ @/ f* S1 F% ^% e% C; K6 U方法二:采用群组用户方式实现验证+ M$ k4 ~3 n- i9 h1 s
要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
( B( [. r9 ?% l- i: _1 \5 A# l8 u6 x {1、建立一个用户组文件 d:/users/user.group ,内容如下:
- O7 R& r y/ ]1 O0 C; S' r8 _# J! O5 Y- x7 v0 f7 Y7 |
manager:user1 user3
7 e0 X- c- u# x0 d; |game:user2 user4* A* d; E- h$ ]# R, j
download:user5 user6 user7
3 O! f( _/ I$ E, r* n
7 f: X1 \0 K4 m: r! Y/ M; p1 F如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。
; ~& b1 C- Y" C7 A! z7 W+ U& k: X5 }% M
2、实现某组用户能访问 http://localhost/test/
+ H0 \5 E# ]2 R编辑 d:/home/test/.htaccess 文件,内容如下:* g) ^+ z% e9 o+ r' b% Q* ^3 M2 H
' h2 H3 T6 |. K8 G1 `
authtype basic4 V9 j" p) d4 z4 o4 g
authname "www.home.net"
! W) G+ D! I9 U( }2 }( Bauthuserfile d:/users/users.passwd% J0 ]3 q8 s, w" W
authgroupfile d:/users/user.group
f0 g, [+ I- H2 ]2 l: K- \; ]require group game
# R" ~0 u1 L8 U4 q; Y0 E" G+ C
! v) k; G" R8 B, D) n/ N$ D; Z那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。4 F1 N" @& @$ p; G( x
/ t2 h7 \* o8 a
以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。8 R5 n* P e" [- q( Q+ [- ~
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。& G( j9 @: o5 P: A; \7 t
实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|