|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。5 n: ?' B% e/ g: U2 k8 Y
2 \4 _! v+ @, g' U/ A0 U
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
! G* Y% u$ a. D4 t4 e假设Apache的web根目录为 d:/home,对应URL为 http://localhost/
& |! [5 Z: w6 T _如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。! B5 I$ ?( M4 j# I' W9 ]& L5 N2 p5 U
d:/users目录用来存放密码文件 user.passwd5 _, v, f0 r! M, L* A) _, g8 k* R
Q0 b, n. z, X+ ?. g1、制作用户密码文件" Y0 ^2 D( s: V
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。
1 _+ s4 n$ I# J% LD:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456
1 F6 m% a$ ^# c这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/
# o5 r' \( P8 u6 n' P; z成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
! J# C( e0 `6 e* AD:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456" B+ [5 Q8 X7 D9 B
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
) [# J. g0 [# H/ J* u6 s6 \; r( t; U; I* V! n
好了,当添加完用户,就可以着手实现用户验证了。
8 j6 T. A- T/ ^0 q! t
+ i/ e' `. h6 w; \+ l F6 x7 \2、制作访问验证文件 .htaccess
; I9 u. h5 f: j% b G# N: Y打开记事本,输入以下文字:; R& D1 g2 h, {( V% t3 Q
7 X7 k( b: o9 e& u1 R0 `9 a8 l; Sauthtype basic4 b% h4 q- |! v: k
authname "www.home.net"
5 Y+ s; D) c! `0 W; L5 q xauthuserfile d:/users/users.passwd2 p8 V0 z% T( S" _6 S7 y* y
require user user13 \1 _3 H# z& }8 p) I, a; K
1 ?" L1 \7 ]( q8 t: U5 E
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。
: y+ ? r& |8 ^/ Z. ]$ Y1 w2 O- J- Q
到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。
$ [+ w3 W Z8 x- e4 {& j# V$ H4 }/ ^ A* P8 V: b
3、实现指定某几个用户对一个目录的验证
; m6 w0 a5 n. W+ q; ?) P例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:
$ n/ \( r' P( d; m# Krequire user user1
& t% N# z1 |- \+ W. F/ f& \改为:/ N' B; b0 K% o3 M6 S! U1 Y1 Z6 J
require user user1 user38 W' ~* O- T( B. o5 a( F- O- I
如此就实现了 http://localhost/test/ 只能由user1和user2访问
% @3 s: X( H3 A5 g8 l3 @/ ? K" v9 l( S/ s1 i
4、实现所有合法用户对一个目录的验证3 B* H2 o9 l8 \* G) s
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 :
, [ F3 B' b6 i: i) T, o( ^; a& u9 b0 j1 j5 }
require valid-user$ Y' j, Z8 q8 c& r
5 U8 l5 m1 [$ K$ I就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
9 K e8 j: W, q. j1 f* _ C. [
6 k5 P; |0 o6 S; I" i! y ]方法二:采用群组用户方式实现验证& Z: {: t! D" o; V8 |$ c; p7 B
要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)% U: | B }$ J4 N; _0 m; A
1、建立一个用户组文件 d:/users/user.group ,内容如下:' _6 X8 p, p& ^. l! ^# P
( V$ t5 c/ E$ F
manager:user1 user30 ?! |3 G$ l% e& g9 A
game:user2 user47 I7 u6 d3 T- m) u$ a
download:user5 user6 user7
2 u6 Y9 A9 \3 t8 d
. ?* B. {$ W5 r如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。- }+ j! @% u5 J9 f
* E6 V. x% u( d5 l0 r* a
2、实现某组用户能访问 http://localhost/test/6 k0 C- w- n' K# U; b
编辑 d:/home/test/.htaccess 文件,内容如下:
5 b- c/ A5 W; k/ a4 e5 M: U8 C y3 L* z) h. T
authtype basic3 V% j- K1 m7 C
authname "www.home.net"# R& O9 u$ N6 a2 O3 ~' s) s
authuserfile d:/users/users.passwd$ j( E% F1 C5 A/ f( F' u% n# Q( U
authgroupfile d:/users/user.group
# O( `- i. f& e! Srequire group game
% W6 [* w1 l- S* k* L/ Y. a# u" D, Q
那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。- y1 V8 h$ l& |
, N' n( `' o) I% {" x: W% E以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。
5 @3 ?- g, K6 @7 d! R至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。7 d- U, `2 K' ~" R0 t
实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|