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

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

[复制链接]
发表于 2004-5-22 18:04:05 | 显示全部楼层 |阅读模式
  相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。3 Z2 @/ {2 z  y9 O) ^
* `1 J) C1 }; l$ W; K! ]5 O+ a
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。6 B9 F& P/ b4 F2 g2 `6 B
假设Apache的web根目录为 d:/home,对应URL为 http://localhost/) F0 Q& l; {, H7 Y6 {5 w" T4 ^
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
) q# \5 C, P! k) E6 Q1 ?d:/users目录用来存放密码文件 user.passwd8 \$ k* F, {" N* u
* Z$ b" A2 i" y/ {0 N% Y
1、制作用户密码文件2 ]+ a4 A  n5 t) `  P) u4 a) m. G
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。( j; n9 f8 X* j0 y
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 1234564 b/ @9 H5 @7 y3 S
这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1apr1S3.....$.su.8AIrDEYMX7jKv2RT9// ]) G( k) \1 ^2 K. J$ N+ A' D2 l
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
  D, B2 h6 R* c0 `  _D:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456
8 b2 a& p2 r, D& iD:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
. D* J. V( p/ j) Z6 m8 A2 `; \# W: \- v& B: X5 H
好了,当添加完用户,就可以着手实现用户验证了。6 S* Y! K5 x' x! M2 V
1 e4 K4 W! O  n. e; B* I$ P# W
2、制作访问验证文件 .htaccess
$ ~; Z% `- t$ [9 z& i; l) A打开记事本,输入以下文字:" _/ l1 Q  [$ q. _) ?# A5 g6 I3 i

, r+ y$ F4 N" z! u! r, V( w  g  I; |authtype basic$ X+ ]% z+ e8 [  G) L1 k$ L/ ^& h
authname "www.home.net"' P9 p6 o: d8 O# D# c7 y
authuserfile d:/users/users.passwd
6 {& D1 d8 e, v, w) srequire user user13 U& V. M* F" q8 a

7 D+ V. V6 \( W然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。& q8 h7 B0 B) C$ A0 k/ i1 A' J
, K4 n" K6 L! X
到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。
) @" \" x& S2 k. y* c7 {
! H1 K, a$ u6 L1 Y3、实现指定某几个用户对一个目录的验证
6 x1 |- o" B& ~* m6 t例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:/ }% Y6 {; o! t# \
require user user16 ^/ r0 J& R) x. C
改为:4 [. ]% @1 t& }0 A
require user user1 user3
5 f2 K9 s6 C/ |, d$ p如此就实现了 http://localhost/test/ 只能由user1和user2访问! ?: d; g* i4 o( K  _  c

( ^- f; O0 A* D+ F4、实现所有合法用户对一个目录的验证
7 @; x% b  o# j$ @' D  }例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : , D* k) z( Y' [% z* o4 N

8 k! v% P, o& v- r( brequire valid-user
( Y) {; M4 s# @( O& F
4 b: e' c% B+ _9 }+ D* `就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。  n/ a/ s& _% ]( O

, c0 a% L( _4 V) n/ c  X方法二:采用群组用户方式实现验证: I2 m: L6 \4 N" K
要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
2 D, L3 i. a5 U1 q( [# D1、建立一个用户组文件 d:/users/user.group ,内容如下:
- p; A: k4 y3 B1 |. j& A  t2 ]3 U; O# P; M
manager:user1 user3" B  U% D; P) y, @  ?
game:user2 user4
" Y! B* L( B9 ]" L( ddownload:user5 user6 user7* p0 n! w  V* {
9 `) z3 e5 K6 ^5 y) K
如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。/ E0 y8 \  H& v4 z$ H! h

& P: Q" ]  J; g& l# E' b; o& u2、实现某组用户能访问 http://localhost/test/( H! ?2 y5 f* x/ y+ d
编辑 d:/home/test/.htaccess 文件,内容如下:
7 E; y% o, P2 B2 J" d& {% N* T4 j1 {6 J5 b* ^
authtype basic5 J5 Q- G9 I! Q, j3 t
authname "www.home.net"
+ l1 @/ Q1 d* i+ S3 yauthuserfile d:/users/users.passwd+ b1 g) u3 K+ B) Y
authgroupfile d:/users/user.group* Z2 H5 R5 W8 I8 Z' B# y
require group game" E" Q1 r6 A1 R' S/ n4 J* G3 u

& a' p; m  Y2 y7 [' F( }! U; O那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。& I  z, L- R% u/ }) o# g- ?3 N

$ A; b! l7 [! _- K. c+ ]0 I6 B; E以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。+ P- Y( C1 P* Q0 Q8 A* G, E+ c
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
# }4 {4 U+ I. g" ?+ ?  p1 W实现Apache的验证方法还有数种途径,以上只是一方面而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-30 00:38 , Processed in 0.018514 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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