|
|
相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。1 [0 ^- ~8 W* T* K# W7 C
+ h1 x3 b3 m9 v$ t方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
, i3 p, d4 p2 c3 M假设Apache的web根目录为 d:/home,对应URL为 http://localhost/- S" E, E! a# ]. M8 L
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
: ?7 G: {; N8 j1 Q qd:/users目录用来存放密码文件 user.passwd/ {( R0 n" a! X4 C
; g* I Y5 f4 v! M( I& V6 c! h1、制作用户密码文件
0 F; T6 I7 E# X! D, ?0 E在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。$ F: L( y; T$ b: Y. S" W
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 1234564 k, u4 s) c1 O) b
这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1 apr1S3.....$.su.8AIrDEYMX7jKv2RT9/) T" [# U3 i5 r' M
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
% W5 u+ n$ P X# l, h, [' K4 ?D:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456
3 C- Y/ B G8 A0 u5 }* \D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456* a s7 Q& o& w- H4 |# d) k$ |) M) ]
$ v4 B( u* P1 H$ @
好了,当添加完用户,就可以着手实现用户验证了。" Q2 k# \- b* j# @
9 l7 I6 l& w' j! f" R2、制作访问验证文件 .htaccess, N9 `: u: G; I, t
打开记事本,输入以下文字:& T v$ H9 x% W9 c! M7 Q
( O5 ]( Z# P& B3 `authtype basic" }, S" \. t: x, \. T, H
authname "www.home.net"- B8 Z# X. N9 ^6 x+ o
authuserfile d:/users/users.passwd
' y4 Z( d. t7 O; V. G Q% Rrequire user user1
" X& t8 Q, g, f1 m6 e4 o! h8 A1 _/ T( H0 _; C4 K, w: a
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。, B0 }3 ]- [1 ]% a M+ z5 J) E
! W9 q' w' o! k7 T+ q: |5 u6 d到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。
6 o/ Y( U' |* o0 i( f3 A% O# M! a' E
7 S0 t, [" W( Y9 o" Y3、实现指定某几个用户对一个目录的验证
3 u& F2 b9 ?6 q: O例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:
) V! b% x5 [3 ?& nrequire user user1
9 Y: Y( ~5 c* _$ R5 T改为:
% T% L; a6 P# D0 }0 Q/ [; U' {# _require user user1 user3
0 `3 }" {- a& a% D: b如此就实现了 http://localhost/test/ 只能由user1和user2访问2 m* [3 L+ b m' v; ?- y2 ~
% {6 D5 p2 e0 n, A, I
4、实现所有合法用户对一个目录的验证
; Q) X5 N1 J) d4 H# U9 N, ]例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : 4 q5 P. C. ^- v' V$ N+ s
- h- [6 j, m: ~ Grequire valid-user
9 A; G% A3 y6 E0 d2 T9 M
/ u4 a$ @+ O, w$ k# |就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
5 | H6 ~+ N7 c6 I; S/ `
9 Z# q( G0 S. H9 Z方法二:采用群组用户方式实现验证
# q9 X0 H( b$ Q) d8 F1 c( y要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
/ l2 \0 Z2 Z! u# p( T1、建立一个用户组文件 d:/users/user.group ,内容如下:) z* w1 g, }* Y( h
3 c% q; I+ f ^: d
manager:user1 user3* q0 M- A l! V* t0 h
game:user2 user4' a- Y6 b0 u- x6 ]! d
download:user5 user6 user7
5 ^+ p8 t) B7 {( n) y0 t$ K- _& M/ i9 y
如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。3 T5 {& z/ {5 o. ~+ r* o
8 K8 w4 b% b e; Y' k( Q( ~8 ]
2、实现某组用户能访问 http://localhost/test/# \& s+ z& q9 r, w
编辑 d:/home/test/.htaccess 文件,内容如下:
1 ]2 |% n. N" Y+ N- y5 P. d9 w+ q0 `
8 D' v8 y7 J b3 q6 Tauthtype basic
4 C7 b, e- {3 f3 c5 F) U$ D! l; Q+ gauthname "www.home.net"
9 c/ j4 M9 x" {authuserfile d:/users/users.passwd1 y8 y4 J4 ?# R: ?, |
authgroupfile d:/users/user.group$ L" v7 Y! x+ `( M
require group game! m8 t( g, C8 M+ V$ O
U# K/ x5 b$ O- g) o, o
那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。1 v6 P. l( x$ H& d4 }9 G
~- ~& e3 `* j# y
以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。. _+ N, V5 i' f0 z. T; ~
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
1 K v2 ^' A7 l# c1 P9 D& |实现Apache的验证方法还有数种途径,以上只是一方面而已。 |
|