|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。5 B' Z8 a8 ~# I3 o U; ]" p5 u
1 V8 L ~" C, |: W
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
W; p7 }! j. I假设Apache的web根目录为 d:/home,对应URL为 http://localhost/
# p+ g( D: ~0 T如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
. v, v4 q# w1 c1 G: B. [1 nd:/users目录用来存放密码文件 user.passwd |( h s% ~2 q! R
. S' u- v, e. h7 G, x% [1、制作用户密码文件) ~1 V" t4 l4 D1 e& K
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。
3 K8 H9 q }5 G' K- z+ X$ ND:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456
a( t, k8 H' O- G6 P这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/
. J& C7 x9 Z1 k, O6 p1 {成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:9 f/ X. Z* x2 c: I/ ` ^; W" P
D:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456: X4 K2 K6 T" Q4 m4 h0 S; P
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
9 V* z" d" Y# k5 c. [( Q/ J2 ~( M. J! k3 j' p
好了,当添加完用户,就可以着手实现用户验证了。2 J6 {# x0 a( K( k# Z
4 O, S5 _! m; E @
2、制作访问验证文件 .htaccess
0 f& y; z$ ?, x" R4 o" c打开记事本,输入以下文字:
( q+ y9 t p$ @& U% Q6 w% Y' q& X+ ]3 v5 f1 h; g# \
authtype basic5 e8 p8 ^, x- Z2 H5 h/ I9 ]* m
authname "www.home.net"
' ^* C% `. z! }0 Z: ]) \authuserfile d:/users/users.passwd
" J7 i4 [/ L" b) n- Irequire user user15 O9 ?+ ]/ {! [9 v
u0 H* r2 c) K- \6 T' ?3 h
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。 p- {" s* _, S6 w3 t
/ u ?7 J7 k* T0 F% G7 n* j; ]到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。4 A4 Y$ K! Y/ b9 W9 q0 o: G" u' {# K
% J: ?7 |! l/ F. q& m! k, E4 q$ \
3、实现指定某几个用户对一个目录的验证' y; k# }/ U' |( e, b' M
例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:; Y# D! Z! P L+ \( n/ F
require user user13 V9 t# V( c6 A; S" K- e
改为:
# n! O( W; Z. A; `require user user1 user37 w I+ M7 |! p( f6 {: i, X
如此就实现了 http://localhost/test/ 只能由user1和user2访问
' z" s" w/ U& U( r! x/ y# H: [6 ?
; D( `% D& }- [) h W* c4、实现所有合法用户对一个目录的验证' S/ u5 i+ M. d0 V, _
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : 6 d: r3 n/ H' Y6 \+ Q8 L% G4 _9 R
5 \1 E0 p. z! c9 C C9 ]* erequire valid-user0 Q) G D4 W, `8 x$ h
: h( L# S8 H' z: e$ |$ e2 k
就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
+ p7 s* k, x) k5 l/ ]
, h4 J& I$ X5 m/ i$ H3 `方法二:采用群组用户方式实现验证
5 W' h5 @' F) l% X要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
7 V- ~! R4 I; u, T, e& r6 B+ i1、建立一个用户组文件 d:/users/user.group ,内容如下:' m6 |: B# Z8 T( g3 ?
4 U- x% N3 |5 t4 g2 X% ]+ G) N
manager:user1 user33 S% a0 V1 z6 j% q" ]
game:user2 user4 j7 z, {; R o
download:user5 user6 user7 H, X2 ^9 o8 B% d$ f
" h @) D( x& R- L( E
如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。 q# [: `3 Z( S2 t% n3 f
+ e$ I5 O6 D7 s0 e* V# h/ i
2、实现某组用户能访问 http://localhost/test/# Z5 e! q1 \& u d
编辑 d:/home/test/.htaccess 文件,内容如下:) [3 a- k$ \+ I8 u! \. d
9 [" S/ L" x2 N8 p/ w5 N9 C6 N) b
authtype basic! O/ @4 X1 s3 U) N+ q
authname "www.home.net"
) l( `# a7 Z, `) Fauthuserfile d:/users/users.passwd
1 e1 ?9 Y+ g1 E8 [% v; x& Lauthgroupfile d:/users/user.group7 n$ O" b+ s/ ?# B0 l
require group game, W1 ] O& r4 I, d/ S: {
! {9 i/ X3 C7 m, k那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。
2 d9 Y( }" J+ x* l1 x9 l. S
4 t( ]* r8 L! z% N. U8 }以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。; v6 I$ }' H( R
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
! ?% U) r, h ~+ ]; `实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|