找回密码
 注册
查看: 5513|回复: 0

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

[复制链接]
发表于 2004-5-22 18:04:05 | 显示全部楼层 |阅读模式
  相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。5 B' Z8 a8 ~# I3 o  U; ]" p5 u
1 V8 L  ~" C, |: W
方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。
  W; p7 }! j. I假设Apache的web根目录为 d:/home,对应URL为 http://localhost/
# p+ g( D: ~0 T如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。
. v, v4 q# w1 c1 G: B. [1 nd:/users目录用来存放密码文件 user.passwd  |( h  s% ~2 q! R

. S' u- v, e. h7 G, x% [1、制作用户密码文件) ~1 V" t4 l4 D1 e& K
在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。
3 K8 H9 q  }5 G' K- z+ X$ ND:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456
  a( t, k8 H' O- G6 P这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1apr1S3.....$.su.8AIrDEYMX7jKv2RT9/
. J& C7 x9 Z1 k, O6 p1 {成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:9 f/ X. Z* x2 c: I/ `  ^; W" P
D:\apache\bin>htpasswd -b d:/users/user.passwd user2 123456: X4 K2 K6 T" Q4 m4 h0 S; P
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
9 V* z" d" Y# k5 c. [( Q/ J2 ~( M. J! k3 j' p
好了,当添加完用户,就可以着手实现用户验证了。2 J6 {# x0 a( K( k# Z
4 O, S5 _! m; E  @
2、制作访问验证文件 .htaccess
0 f& y; z$ ?, x" R4 o" c打开记事本,输入以下文字:
( q+ y9 t  p$ @& U% Q6 w% Y' q& X+ ]3 v5 f1 h; g# \
authtype basic5 e8 p8 ^, x- Z2 H5 h/ I9 ]* m
authname "www.home.net"
' ^* C% `. z! }0 Z: ]) \authuserfile d:/users/users.passwd
" J7 i4 [/ L" b) n- Irequire user user15 O9 ?+ ]/ {! [9 v
  u0 H* r2 c) K- \6 T' ?3 h
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。  p- {" s* _, S6 w3 t

/ u  ?7 J7 k* T0 F% G7 n* j; ]到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。4 A4 Y$ K! Y/ b9 W9 q0 o: G" u' {# K
% J: ?7 |! l/ F. q& m! k, E4 q$ \
3、实现指定某几个用户对一个目录的验证' y; k# }/ U' |( e, b' M
例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:; Y# D! Z! P  L+ \( n/ F
require user user13 V9 t# V( c6 A; S" K- e
改为:
# n! O( W; Z. A; `require user user1 user37 w  I+ M7 |! p( f6 {: i, X
如此就实现了 http://localhost/test/ 只能由user1和user2访问
' z" s" w/ U& U( r! x/ y# H: [6 ?
; D( `% D& }- [) h  W* c4、实现所有合法用户对一个目录的验证' S/ u5 i+ M. d0 V, _
例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 : 6 d: r3 n/ H' Y6 \+ Q8 L% G4 _9 R

5 \1 E0 p. z! c9 C  C9 ]* erequire valid-user0 Q) G  D4 W, `8 x$ h
: h( L# S8 H' z: e$ |$ e2 k
就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。
+ p7 s* k, x) k5 l/ ]
, h4 J& I$ X5 m/ i$ H3 `方法二:采用群组用户方式实现验证
5 W' h5 @' F) l% X要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)
7 V- ~! R4 I; u, T, e& r6 B+ i1、建立一个用户组文件 d:/users/user.group ,内容如下:' m6 |: B# Z8 T( g3 ?
4 U- x% N3 |5 t4 g2 X% ]+ G) N
manager:user1 user33 S% a0 V1 z6 j% q" ]
game:user2 user4  j7 z, {; R  o
download:user5 user6 user7  H, X2 ^9 o8 B% d$ f
" h  @) D( x& R- L( E
如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。  q# [: `3 Z( S2 t% n3 f
+ e$ I5 O6 D7 s0 e* V# h/ i
2、实现某组用户能访问 http://localhost/test/# Z5 e! q1 \& u  d
编辑 d:/home/test/.htaccess 文件,内容如下:) [3 a- k$ \+ I8 u! \. d
9 [" S/ L" x2 N8 p/ w5 N9 C6 N) b
authtype basic! O/ @4 X1 s3 U) N+ q
authname "www.home.net"
) l( `# a7 Z, `) Fauthuserfile d:/users/users.passwd
1 e1 ?9 Y+ g1 E8 [% v; x& Lauthgroupfile d:/users/user.group7 n$ O" b+ s/ ?# B0 l
require group game, W1 ]  O& r4 I, d/ S: {

! {9 i/ X3 C7 m, k那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。
2 d9 Y( }" J+ x* l1 x9 l. S
4 t( ]* r8 L! z% N. U8 }以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。; v6 I$ }' H( R
至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。
! ?% U) r, h  ~+ ]; `实现Apache的验证方法还有数种途径,以上只是一方面而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-2 03:03 , Processed in 0.017657 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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