找回密码
 注册
搜索
查看: 5233|回复: 0

[转]Win32下具体实现Apache的用户验证

[复制链接]
发表于 2004-5-22 18:04:05 | 显示全部楼层 |阅读模式
  相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。+ T1 w  a: `& w
! D+ ?3 o- m  Z5 v
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
- a+ ^, U6 n  B假设Apache的web根目录为 d:/home,对应URL为 http://localhost/
8 c+ o1 |- Y0 e4 z4 d如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。( {" i4 b2 f5 O  E$ x
d:/users目录用来存放密码文件 user.passwd
5 o( e  K( }, M
$ [3 U' v4 e4 r1、制作用户密码文件; Y$ {/ w9 l- h- J! l& H' h2 `
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。/ F( Q# ]" @' P1 k
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456" p9 o) ]4 F, P! V( ~! s8 U, r
这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1apr1S3.....$.su.8AIrDEYMX7jKv2RT9/2 [7 M+ C% e# K- E( y9 G
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:2 y, d% l8 A, _
D:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456; x: g  x' t  `" s/ o
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456$ G, ?3 Y- |* q0 n+ U

% Y# ]7 y& A5 n9 E, k8 D3 p  u好了,当添加完用户,就可以着手实现用户验证了。
+ i6 q9 E. g. _2 m2 X7 v+ `4 v, n2 `3 w" \5 [& o+ |
2、制作访问验证文件 .htaccess8 ~2 `: g2 ]! Q1 N1 ~4 L, X& ]& |
打开记事本,输入以下文字:
4 S$ C) j% {) e8 O4 y
3 {" H) S- |4 z2 M' N: @, sauthtype basic) r& i# ]1 S7 N$ ~
authname "www.home.net"
$ x/ K5 ?4 v1 p  ?- p  S& kauthuserfile d:/users/users.passwd% N2 g: p3 f9 h1 P/ y
require user user1
6 U5 L) g4 u2 `$ y; i! d5 Y2 a' ~' b( ?2 A4 U
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。4 t; k! A  a3 j* p: w8 g5 c

8 W% O8 [% x: y9 {到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。4 a+ u* l- @8 E6 `0 Y& v

+ l5 ]9 t" h% V6 s# f$ F8 u3、实现指定某几个用户对一个目录的验证4 Q' l7 \1 o% y5 ?+ b% g6 P  Z# g- |
例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:0 X- A0 `* v# T& e
require user user1& w4 Y! C; |& F# E& G
改为:
& N- X* N2 k% U. W$ V; ~4 Y" ^require user user1 user3- n) s; m9 p3 ?% H( }" g% }  I
如此就实现了 http://localhost/test/ 只能由user1和user2访问
+ q3 h8 I: P, |7 T7 J% Z
% N; b0 I' D9 v. l/ m0 [) G4、实现所有合法用户对一个目录的验证! |1 C$ L/ V  z& k5 C( ]: j- v( Z
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : ' I* _, a$ Q% s8 F( V; z+ H9 U

9 f2 ]. x+ C$ @6 Prequire valid-user
* r6 \( r, K7 W8 t/ \1 j4 b! V6 G- E  b" g
就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。# Z( M% G- ^7 M7 `
6 m& Q* k2 c% @! O
方法二:采用群组用户方式实现验证
- a: L# p4 l$ |) U6 V7 Y要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
2 q. e% e$ O3 t0 U0 Y1、建立一个用户组文件 d:/users/user.group ,内容如下:
+ o$ {8 H* r8 n) @( @4 A: B( G
8 k' i% j& |2 H' Z/ fmanager:user1 user3
( m$ C2 \4 Y/ T* U. M) mgame:user2 user4
9 v# e' C4 t. D" D* Ldownload:user5 user6 user7& s/ P4 k4 Y" ^: R+ @  J

% s; w' K' D% Z/ a8 y4 \' }" {如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。: x2 H9 f# K6 S. L# Y+ ^. A
  ^$ @; B$ W2 [0 L  |  O' _
2、实现某组用户能访问 http://localhost/test/
6 ~7 Q, ]0 \3 `' g! r! u% ]% y8 ]  v编辑 d:/home/test/.htaccess 文件,内容如下:3 m: i/ ~9 B, x( @; y" d
3 y: M& [" w8 b- _# w
authtype basic
5 c  B1 `' G5 e0 Jauthname "www.home.net"# o; m* o( z7 X) t
authuserfile d:/users/users.passwd+ s3 i2 D4 l( b
authgroupfile d:/users/user.group
- k2 r" }( I; X* V! f: e0 F" jrequire group game
! _1 q- l4 h- e- r6 W# w! h* n; ]5 m- g+ I# n! L- R- B
那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。+ `; B. u; g, k1 p

  z! x. d" m8 o# |以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。! ~* o& b' i% S! }
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。( D( N" l( }  I
实现Apache的验证方法还有数种途径,以上只是一方面而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-12-13 10:07 , Processed in 0.018533 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表