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

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

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

) {3 S' O: d( [& f0 S7 V6 b; d2 ~方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
4 [) G6 A! [: P( S9 ?, v假设Apache的web根目录为 d:/home,对应URL为 http://localhost/# _" ~3 Q; `6 `6 @' C* e
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
* j# ^! N6 e- H9 O/ _, jd:/users目录用来存放密码文件 user.passwd* w  Y# P/ T! x+ B- m  t: y. g
& Q, j9 G9 H# J6 o
1、制作用户密码文件
6 j  g& P( U& y' p9 ]在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。% z. J: ~: ~0 t- i+ L) d* K+ W
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456
. H' P$ ]) z" C8 }4 T- W# ~这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1apr1S3.....$.su.8AIrDEYMX7jKv2RT9/4 y2 i: f% f; Y3 o. X. s9 ~( |
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:( G2 \, A; Y0 `& d
D:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456) r4 m* E2 O2 x0 c4 v3 U( J
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 1234562 w6 k* Y- }' j' L7 R

. U; c7 f+ p9 D6 |. k5 Q2 o1 ?好了,当添加完用户,就可以着手实现用户验证了。, E; y* _' q6 @+ z3 w
7 V* z; e( q* U) q- E  C4 E
2、制作访问验证文件 .htaccess
2 ]9 O: `+ v: N! Z( G打开记事本,输入以下文字:) J! R' L6 _2 b
) [8 u. B) T$ _
authtype basic
1 M5 f4 G  d3 m& H; y% Gauthname "www.home.net"
1 K- b4 T/ g4 d& C0 t7 M6 Mauthuserfile d:/users/users.passwd1 E) f, N' K4 b6 C3 [" i, v/ N2 N6 n
require user user1
2 y. \4 k5 W1 j9 C  _4 X: k8 m0 N) ?6 Y  ?6 [  |1 t
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。, c: Z" q1 u2 q4 ~" M! c
8 ?( T3 T( p: V/ t" u% x( N0 x5 }
到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。
' p$ c9 `7 u+ A0 f; A( ~/ x4 }4 y1 K
3、实现指定某几个用户对一个目录的验证
! l5 `2 g& ?1 [/ o) |例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:
) R) {" w2 |8 xrequire user user1! E7 ~* u3 O1 U% j" [
改为:
9 ]0 G, M; Y. G$ X7 k) j. hrequire user user1 user3
% I7 ?. [% D: S, E7 u如此就实现了 http://localhost/test/ 只能由user1和user2访问
/ K1 k( y% F& Q- O1 |% u, a- N
( U1 x8 ]- v3 P' \; X4、实现所有合法用户对一个目录的验证
4 R! t: O/ g" K0 W+ z例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 :
: r9 F: }3 g/ Z" h- r! q* _* l
9 I1 e# y+ J& o+ trequire valid-user
; ^( J2 I# Y+ k# y% a2 r& `8 J. L* T4 e! c# K
就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。. C  i7 q+ f% {4 H% N, d2 }, \
" o3 i3 c  Z, x( ^) y, ~
方法二:采用群组用户方式实现验证
+ F6 w& y: o; m6 B要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
0 e- J4 i( P- R! z1、建立一个用户组文件 d:/users/user.group ,内容如下:  P/ ]5 ]: B/ l

. d; e* S4 z6 E5 x1 F% e* M( emanager:user1 user3
- R- K. n0 ~( l# |game:user2 user4
9 j: c5 u) j  R( tdownload:user5 user6 user79 ], `3 Z' a8 L6 K3 R

) m$ e' h& t* t4 Y4 T如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。
4 j8 |. r( n. G( P7 A# q& g" a1 e3 S/ P2 O5 }7 f, ^
2、实现某组用户能访问 http://localhost/test/
7 @% I  F5 ?# y$ z9 C编辑 d:/home/test/.htaccess 文件,内容如下:% S. G, m: l  x

  r: n9 O. h1 P3 rauthtype basic
6 y  @+ W4 m. j- W# |authname "www.home.net"- u0 ^+ d. _% B5 [, s2 f
authuserfile d:/users/users.passwd6 I4 K7 A+ O1 C# P6 |( ~
authgroupfile d:/users/user.group
8 a' ?+ Y& S6 k. Q) |# J* x) prequire group game$ S4 V; W, B; b
+ E' i" d( Z1 ~4 ^
那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。
0 l: V* y( H/ G! m& {* l9 J5 V5 Q: m( Z. W' `
以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。
3 x- J: [, _% v/ T至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
: |5 A* m1 E0 J% i: H, @- T" l实现Apache的验证方法还有数种途径,以上只是一方面而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 11:58 , Processed in 0.017296 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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