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

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

[复制链接]
发表于 2004-5-22 18:04:05 | 显示全部楼层 |阅读模式
  相信大家采用的验证方法很多种,而在Win32环境下如何设置Apache用户验证的介绍很少,手册上介绍的也是Unix和linux环境下的配置,象我这样在win32下苦苦摸索Apache的人应该不少,我根据自己的经验介绍一下自己是如何在Win32环境下实现apache的用户验证功能的。
4 `+ k8 _  q3 D
1 m) `: x) a& W2 I9 G方法一:以单用户方式实现某目录只能由某个用户或几个用户访问。* X( @6 M0 j+ t% ]! q1 R
假设Apache的web根目录为 d:/home,对应URL为 http://localhost/9 M% X: d  S- U% ^  N! U" q6 G! l
如欲使d:/home/test目录只能由某用户访问,该目录对应URL为http://localhost/test,访问该URL时需要弹出验证对话框。: z# r% k( N: ]* I
d:/users目录用来存放密码文件 user.passwd. t' l8 x4 ~& {# Z4 i# M

. X# l7 C$ \& c* ~8 E9 S7 N3 Z1、制作用户密码文件
, W' l3 V9 Q, H$ I% {- }  o在命令行方式先用Apache自带的工具htpasswd.exe生成一个密码文件叫user.passwd,-c参数表示新建文件,无参数表示在该口令文件中以添加方式增加一个用户。9 S& _0 h! [1 \1 g6 w* j" d5 M
D:\apache\bin>htpasswd -bc d:/users/user.passwd user1 123456
  d) J! }4 U6 }# _这样,就生成了d:/users/user.passwd 口令文件,里面有一行文字 user1apr1S3.....$.su.8AIrDEYMX7jKv2RT9/6 u5 `3 Q% S$ q. W! [
成功增加了一个user1的用户,如果想再添加其他用户,就采用追加方式添加用户:
. h' l# W8 H- O  VD:\apache\bin>htpasswd -b d:/users/user.passwd user2 1234567 |# b1 l: p% E
D:\apache\bin>htpasswd -b d:/users/user.passwd user3 123456
6 h3 M  E0 U6 P
3 N- B* [/ k# o7 R6 _好了,当添加完用户,就可以着手实现用户验证了。
( o) S. Y3 l, @
0 n' {* O) L6 e2、制作访问验证文件 .htaccess" b  I: ?* A8 q8 g- P1 g3 _
打开记事本,输入以下文字:, }( V8 G! [  ]3 B* [5 e+ D% S
" _2 [/ Q- U8 s: `. q8 a
authtype basic) F. f& i  f; ^; t. t
authname "www.home.net"4 K" t6 w/ T7 N% `5 D  [
authuserfile d:/users/users.passwd
3 g8 j7 x  r2 P! C  R3 e1 Lrequire user user17 U( A/ o6 c. l7 x$ S4 D. q! U7 V
2 a' ]7 @% q0 P7 t) U( l$ |
然后另存为 .htaccess,保存路径为你想实现验证的目录:d:/home/test/下,注意保存类型选"所有文件",文件名为".htaccess",否则就不会生成 .htaccess 文件了。2 H) j" w" l8 h7 Y

5 |/ T+ |5 n4 O到这里,指定某个用户验证的设置就完成了,在浏览器中输入验证目录所对应的地址 http://localhost/test/,会发现浏览器弹出一个对话框要求你输入用户名和口令,你就只能输入用户user1和密码12345才能进去,输入其他用户如user2,user3是没用的。# J& b; z) X! r2 b2 C0 I& Q

9 G$ _% u9 r  e6 ]; o5 x3、实现指定某几个用户对一个目录的验证
- y" c/ _5 C& s( h  Q例如决定 http://localhost/test/ 能由user1和user3访问,user2不能访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句:
7 a: W7 i$ }/ t+ c1 z5 W0 d5 Grequire user user1
6 B7 v5 _; k( r  L* g7 D" y# w改为:5 J' ^$ `4 [9 z( G* a
require user user1 user36 N* |0 J3 ~0 V/ {4 _  V
如此就实现了 http://localhost/test/ 只能由user1和user2访问
' m& x4 }  w6 L  |! B' }* \4 Z' h* p* s
4、实现所有合法用户对一个目录的验证
# u/ c, e8 B$ _/ R; ?( V例如决定 http://localhost/test/ 能由 d:/users/user.passwd 文件里的所有用户访问,则编辑 d:/home/test/.htaccess 文件,把最后的一句改为 :
, i6 L$ L  H' p4 @3 j/ i: V
7 \- M4 U4 Q* x% T2 {$ r8 Prequire valid-user) o, y& n  `% e- |8 [3 R. h

) T) F  @& L5 w1 T- y+ I9 i就可以实现在 user.passwd 里用户都能访问http://localhost/test/了,只要输入的用户名和密码没有错误。& V( o' D7 o9 q8 u

8 X' c8 o1 z5 z& G方法二:采用群组用户方式实现验证
) {/ C9 g% y- L% s要实现其实也很简单,在方法一中对 user.passwd 文件里的用户进行分组,建立用户组文件,再在 .htaccess 文件里指定 authgroupfile 就可以了。假设 user.passwd 中已经添加了很多用户 (user1,user2,user3,user4,...)# @0 I: s! _1 G! ~- |
1、建立一个用户组文件 d:/users/user.group ,内容如下:1 W& L* {) C. X2 C( t8 p
8 |; V8 \3 a$ P3 g/ V" F. ~
manager:user1 user37 r& i" o+ I0 Y
game:user2 user4, ~0 N" M1 F  f: I* V
download:user5 user6 user7
9 h: S! y$ J2 o) k* T. `' v8 X3 `$ m/ Y7 |
如此,user.group 文件里把 user1至user7这7个用户分为了3个组:manager,game,download 。' H4 t: a+ g" R+ _! Q

, u# N2 u' {1 E& l9 g( X% b+ g, w2、实现某组用户能访问 http://localhost/test/
+ Z! A8 j. ]+ ^编辑 d:/home/test/.htaccess 文件,内容如下:
; l+ o. u; M  ]. z
# ^( \4 {, U0 p& O2 a1 Pauthtype basic
! L* ]; o9 g9 U' o2 L% u7 vauthname "www.home.net"
  C- n3 Q8 b# f) q$ R, ]; tauthuserfile d:/users/users.passwd
! q4 V2 F9 Q; X+ Q* X7 ^authgroupfile d:/users/user.group
* E: |) B! m0 w" Xrequire group game
( r! E; n7 G: d& v
5 M( q7 y; c+ e! x) a: B& P那么,http://localhost/test/就只能由 game组里的用户 user2,user4 才能访问了。. p' k% J' P6 A! A& W. ?
% M5 W+ K8 w' s8 k# j, D
以上步骤,对于熟悉编程开发的同志来说,完全可以做个图形界面程序来完成,就省事多了。
4 _( _8 n% c1 J/ j6 G至此,Apache在Win32环境下的简单验证就实现了。看来和 Linux下的设置方法差不多,我却走了不少弯路才摸索出来,惭愧惭愧啊。$ |& W; c: G7 G1 u! s$ v: y
实现Apache的验证方法还有数种途径,以上只是一方面而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-19 15:40 , Processed in 0.037749 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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