|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。# u6 ~1 w& H/ [$ w) U
5 ^6 V$ R( m4 r6 |方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
G2 [( n) Q) C假设Apache的web根目录为 d:/home,对应URL为 http://localhost/- U6 a& ]. e' c5 E! q+ q
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。5 v. [) k6 m5 S
d:/users目录用来存放密码文件 user.passwd
) q5 d, v" c; r4 w" @! P2 z4 }
# W( S+ I. ?+ A* t6 c: s4 t& v1、制作用户密码文件
4 ^: r8 ~, [8 p/ {( q在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。3 e) |9 ^* o- N! _
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 1234564 \. r& ?; m+ j3 Y: g
这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/
) R/ ?" S& x4 a ]1 L1 a/ d成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
: c4 j4 h% Y/ i; ~ M+ nD:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456( s# i6 f- P% R
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
( O% b8 e9 h1 U9 f7 h: E# d" V* P* F3 Q! q' t2 f
好了,当添加完用户,就可以着手实现用户验证了。
* {) m$ s( O8 k6 Q+ v- }2 v1 K8 E0 ^: _3 f2 P
2、制作访问验证文件 .htaccess
, X' ~& q" F2 G& V3 Y: S0 `/ v打开记事本,输入以下文字:
5 Y& k' w$ V- ]' l K. w( x: S8 a. O8 g
authtype basic6 H3 C- K/ l8 C7 k( _9 @- t2 W
authname "www.home.net"5 d2 M. X' z) \# N% o1 A/ q
authuserfile d:/users/users.passwd
3 Y7 A5 g$ L0 D2 y7 \, _( Xrequire user user1. Q8 o+ a/ U$ w! n1 P, O2 A
: x0 P' O6 a2 g. h: d" D然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。
1 [7 C/ B- G% T% D( N" t3 ]- n4 x* Q9 {
到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。
# o i7 B3 ~/ b
5 ?; W& v( t1 m% \) z9 G3、实现指定某几个用户对一个目录的验证# ?' t7 r5 R5 Z4 ~" O
例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:$ S0 |: a M' F1 l+ N8 `, A8 n2 A8 w
require user user17 d: f0 k3 u b# x
改为:* G; W# k( v" P H
require user user1 user3
2 q6 q$ r+ R9 h7 t/ R如此就实现了 http://localhost/test/ 只能由user1和user2访问' Q, Q$ u- l2 }/ t
9 _$ {6 n& |* c- Y5 j4、实现所有合法用户对一个目录的验证, G' B6 l1 v% K; Z1 _1 ^
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : - g$ l; B' l4 X- E. W( _0 k' l
8 k2 z# b) |7 B# h3 f) W& K Urequire valid-user
( e2 s3 h4 C- B. ~$ E' A$ r/ X, e% Y7 u3 B
就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。+ P- }# |: ^# X4 C+ N: z
+ t8 @8 i- G7 A" n! C+ |! }. V
方法二:采用群组用户方式实现验证6 v$ T4 l. D' n3 _8 q
要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)/ E, }; \. G; c- y$ u% Z
1、建立一个用户组文件 d:/users/user.group ,内容如下:0 S: `0 P/ ^2 l. S9 |% N
8 n) C5 T4 D2 K$ v9 W. o
manager:user1 user30 C' v8 g9 ]; w' @0 o
game:user2 user4/ x& Z2 M. J; G. Y m0 T3 f
download:user5 user6 user7
5 ^! t. d& c; o/ k" Q1 Z/ ?+ @2 {( H" V
6 S _9 Q) Z% s! D# y6 ^( q7 _如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。$ N7 J. p4 H/ U9 k% @& P7 u
8 j/ ~1 Y9 V7 u3 D m2、实现某组用户能访问 http://localhost/test/
( ~0 V/ _7 a0 K- g, p9 c5 Z. I编辑 d:/home/test/.htaccess 文件,内容如下:# \9 @0 W, L1 J1 I7 o5 |* Q
0 N# M {7 }4 y/ d: b. ~. Oauthtype basic
# S; E( z1 M$ P B, I; qauthname "www.home.net"' s* e& o T1 d+ V8 i9 g
authuserfile d:/users/users.passwd
$ B% C! u M0 }7 z, rauthgroupfile d:/users/user.group
& E6 O) W; K" w# V2 ?. u' h3 E; orequire group game
- t- C8 B* u+ w; x+ F' L3 `' \4 B1 V0 |% F8 ~6 v
那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。& J) G& c, b$ G$ d& f* B+ c
% W1 u6 q6 _7 ?* N" I7 i ]& B
以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。
" D- p9 n* V& g0 h至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
. V- z5 D1 G( k8 d' h% h实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|