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

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

[复制链接]
发表于 2004-5-22 18:04:05 | 显示全部楼层 |阅读模式
  相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。$ e0 ~$ Y3 _; C- n

% O) G( A# J3 T4 V方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
- m3 P  z# Z; q假设Apache的web根目录为 d:/home,对应URL为 http://localhost/
5 @+ B' }( F6 t3 k9 ~/ D+ U如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。3 ?* M7 Z$ y! P/ b" ^! J
d:/users目录用来存放密码文件 user.passwd3 A, R" k7 S, t! B' d) _( G0 Z: P6 e
1 T, _+ ]! y" d
1、制作用户密码文件' ]) F, _, C/ j' x% @
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。+ [% H8 T1 P& M2 T+ y7 k
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456/ m5 q# \5 l8 X% y; a
这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1apr1S3.....$.su.8AIrDEYMX7jKv2RT9/: D% ^4 L6 Z! L7 x
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
% Z) s, P2 I8 ~* x6 DD:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456
9 h) Q3 v9 E6 k, aD:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
9 n7 o+ x  c& {8 v' W' ^1 x
; e+ N8 A6 X5 l0 V好了,当添加完用户,就可以着手实现用户验证了。3 r- l+ c  j7 N% f

( E  d6 u& O6 }. u/ s( L% l2、制作访问验证文件 .htaccess
1 o5 N5 e2 i4 D" i打开记事本,输入以下文字:; U5 f) f1 M/ n, \$ ?

, g2 |6 U+ ]+ w; }# s3 U9 ^8 [authtype basic
3 p: p- h' K* |6 I4 cauthname "www.home.net"& _  i; z  |5 Q: T  E7 I) J
authuserfile d:/users/users.passwd) h9 j1 F" e+ ^2 Y
require user user1
5 N7 X4 L/ ^4 K4 F! u9 t7 u6 n: b$ z# K  O2 J. O- j
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。
7 u2 d5 Q' m& g/ c8 w7 H4 r' ~7 y1 x$ h+ |, c6 G5 r
到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。1 ~, Z+ K2 j( L' I( j

; W/ _. U4 V0 T! ?3、实现指定某几个用户对一个目录的验证( E3 G8 U& t! i7 x
例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:% e  z3 b+ f" q2 H1 i; {
require user user1( T- [  p% ?; B0 c0 e; E0 \
改为:
' v( g' L# t# m; y' arequire user user1 user36 q4 ~; T! i/ A# d
如此就实现了 http://localhost/test/ 只能由user1和user2访问7 V5 J8 J) }+ F, @+ ]5 A/ D
+ e6 N: F/ n* r+ p
4、实现所有合法用户对一个目录的验证
" @# Y& R: k: Y$ B; s例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : 5 y  q% `% N, I- H, n$ W
) @0 b" y# E. f0 K8 ]+ f3 N! V
require valid-user1 v/ w% Y: S; R* G4 p$ t8 V6 G( t

2 S$ x( ?0 g9 X4 E8 F/ }就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
# @. X/ ]; f5 V9 a( f
( O, s9 ]( k% @/ a, e方法二:采用群组用户方式实现验证: o9 D) P4 E* w& i, o+ X
要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)4 V  J$ R8 K8 N; Q( S% M
1、建立一个用户组文件 d:/users/user.group ,内容如下:& Z2 V) D! j( s# d& j

3 ?; M( A& }2 f- {manager:user1 user3
+ R" G1 W4 U( u3 V' Lgame:user2 user4
. T1 S# R1 G) f) Odownload:user5 user6 user7+ _% ?+ s7 Q) \6 j2 Y. K# k

9 b% W7 B6 ?2 D8 A. e5 y如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。
9 f$ g# g* Y' _- U, ]' K7 N4 w2 P2 R8 |6 Q- X/ e2 L  w, o8 B
2、实现某组用户能访问 http://localhost/test/
5 I0 H7 [; y* E3 N  R* X4 }1 Y5 r( l编辑 d:/home/test/.htaccess 文件,内容如下:4 A' o2 B' @" e3 f0 z
5 B7 e8 h8 D+ A# v+ M$ y7 P
authtype basic
. @* I7 s. i0 S9 s, Nauthname "www.home.net"
1 `* B4 K! v0 g0 Y/ F; {authuserfile d:/users/users.passwd/ ]8 L$ X5 E7 ^' }* _4 u5 e
authgroupfile d:/users/user.group7 `1 ^0 ], T: x8 Y& \, E
require group game
4 {/ M) A) M8 T3 X% s: B  |
$ a6 _& [, }+ Q9 n那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。+ \& H3 O- Z: {2 L; G

6 }/ b$ p* C/ r8 L1 n* C, J以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。
$ {& _' G& y0 ?8 b2 c3 a至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。4 _# \: E3 n' b1 Q+ b4 p9 v! Y
实现Apache的验证方法还有数种途径,以上只是一方面而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-14 19:54 , Processed in 0.016834 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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