大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 操作系统 -> Web服务器 -> Apache服务器的用户认证

Apache服务器的用户认证

时间: 2021-07-31 作者:daque

常常上钩的读者群会遇到这种情景:考察少许网站的某些资源时,欣赏器弹出一个对话框,诉求输出用户名和暗号来获得对资源的考察。这即是用户认证的一种本领。用户认证是养护搜集体例资源的第一起防地,它遏制着一切登录并检察访问用户的正当性,其目的是仅让正当用户以正当的权力考察搜集体例的资源。基础的用户认证本领是“用户名+暗号”。 apache是暂时时髦的web效劳器,可运转在linux、unix、windows等操纵体例下,它不妨很好地处置“用户名+暗号”的认证题目。apache用户认证所须要的用户名和暗号有两种各别的存贮办法:一种是文本文献;另一种是msql、oracle、mysql等数据库。底下以linux的apache为例,就这两种存贮办法,辨别引见怎样实行用户认证功效,同声对windows的apache用户认证作扼要的证明。 沿用文本文献保存 这种认证办法的基础思维是:apache启用认证功效后,就不妨在须要控制考察的目次下创造一个名为.htaccess的文献,指定认证的摆设吩咐。当用户第一次考察该目次的文献时,欣赏器会表露一个对话框,诉求输出用户名和暗号,举行用户身份简直认。假如正当用户,则表露所考察的页面实质,尔后考察该目次的每个页面,欣赏器机动送出用户名和暗号,不必再输出了,直到封闭欣赏器为止。以次是实行的简直办法: 以超等用户root加入linux,假如apache 1.3.12仍旧编写翻译、安置到了/usr/local/apache目次中。缺省情景下,编写翻译apache时机动介入mod_auth模块,运用此模块不妨实行“用户名+暗号”以文本文献为保存办法的认证功效。 1.窜改apache的摆设文献/usr/local/apache/conf/httpd.conf,对认证资源地方的目次设定摆设吩咐。下例是对/usr/local/apache/htdocs/members目次的摆设: <directory /usr/local/apache/htdocs /members> options indexes followsymlinks allowoverride authconfig order allow,deny allow from all </directory> 个中,allowoverride authconfig一条龙表白承诺对/usr/local/apache/htdocs/ members目次下的文献举行用户认证。 2.在控制考察的目次/usr/local/apache/htdocs/members下创造一个文献.htaccess,其实质如次: authname "会员区" authtype basic authuserfile/usr/local/apache/members.txt require valid-user 证明:文献.htaccess中常用的摆设吩咐有以次几个: 1) authname吩咐:指定认证地区称呼。地区称呼是在提醒诉求认证的对话框中表露给用户的(见附图)。 2)authtype吩咐:指定认证典型。在http1.0中,惟有一种认证典型:basic。在http1.第11中学有几种认证典型,如:md5。 3) authuserfile吩咐:指定一个包括用户名和暗号的文本文献,每行一对。 4) authgroupfile吩咐:指定包括用户组清单和那些组的分子清单的文本文献。组的分子之间用空格划分,如: managers:user1 user2 5) require吩咐:指定哪些用户或组本领被受权考察。如: require user user1 user2(只有效户user1和user2不妨考察) requiresgroupsmanagers (惟有组managers中分子不妨考察) require valid-user (在authuserfile指定的文献中任何用户都不妨考察) 3.运用apache附带的步调htpasswd,天生包括用户名和暗号的文本文献:/usr/local/apache/members.txt,每行实质方法为“用户名:暗号”。 #cd /usr/local/apache/bin #htpasswd -bc ../members.txt user1 1234 #htpasswd -b ../members.txt user2 5678 文本文献members.txt含有两个用户:user1,口令为1234;user2,口令为5678。提防,不要将此文本文献寄存在web文书档案的目次树中,免得被用户载入。 欲领会htpasswd步调的扶助,请实行htpasswd -h。 当用户数目比拟少时,这种本领对用户的认证是简单、方便的,保护处事也大略。然而在用户数目罕见万人,以至数十万人时,会在搜索用户上花掉确定功夫,进而贬低效劳器的功效。这种景象,应沿用数据库办法。 沿用数据库保存 暂时,apache、php4、mysql三者是linux下建立web网站的最好伙伴,这三个软硬件都是免费软硬件。将三者贯串起来,经过http和议,运用php4和mysql,实行apache的用户认证功效。 惟有在php4以apache的模块办法来运转的功夫本领举行用户认证。为此,在编写翻译apache时须要介入php4模块一道编写翻译。假如php4动作apache的模块,编写翻译、安置apache到/usr/local/apache目次,编写翻译、安置mysql到/usr/local/mysql目次。而后举行底下的办法: 1.在mysql中创造一个数据库member,在个中创造一个表users,用来寄存正当用户的用户名和暗号。 1)用vi吩咐在/tmp目次创造一个sql剧本文献auth.sql,实质为: drop database if exists member; create database member; use member; create table users ( username char(20) not null, password char(20) not null, ); insertsintosusers values("user1",password("1234")); insertsintosusers values("user2",password("5678")); 2)启用mysql存户步调mysql,实行上述sql剧本文献auth.sql的吩咐,在表users中减少两个用户的记载。 #mysql -u root -pmypwd</tmp/auth.sql 2.编写一个php剧本头文献auth.inc,步调实质为: <?php function authenticate() { header('www-authenticate: basic realm="会员区"'); header('http/1.0 401 unauthorized'); echo "你必需输出精确的用户名和口令。 "; exit; } function checkuser(, ) { if ( == ""  == "") return 0;  = "select username,password from usersswheresusername='' and password=password('')";  = mysql_connect('localhost', 'root', 'mypwd'); mysql_select_db('member',);  = mysql_query(, ); =mysql_num_rows(); mysql_close(); if (>0) { return 1; //灵验登录 } else { return 0; //失效登录 } } ?> 因变量authenticate()的效率是运用因变量header('www-authenticate: basic realm="会员区"'),向欣赏器发送一个认证乞求动静,使欣赏器弹出一个用户名/暗号的对话框。当用户输出用户名和暗号后,包括此php剧本的url将机动地被再次挪用,将用户名、暗号、认证典型辨别寄存到php4的三个特出变量:、、,在php步调中可按照这三个变量值来确定能否正当用户。header()因变量中,basic表白基础认证典型,realm的值表白认证地区称呼。 因变量header('http/1.0 401 unauthorized')使欣赏器用户在贯串屡次输出缺点的用户名或暗号时接受到http 401缺点。 因变量checkuser()用来确定欣赏器用户发送来的用户名、暗号能否与mysql数据库的沟通,若沟通则归来1,要不归来0。个中mysql_connect('localhost', 'root', 'mypwd')的数据库用户名root和暗号mypwd,应按照本人的mysql树立而变换。 3.在须要控制考察的每个php剧本步调发端减少下列步调段: <?php require('auth.inc'); if (checkuser(,)==0) { authenticate(); } else { echo "这是正当用户要考察的网页。"; //将此行改为向正当用户输入的网页 } ?> 把须要向正当用户表露的网页实质放到else子句中,代替上述步调段的一条龙: echo "这是正当用户要考察的网页。"; 如许,当用户考察该php剧本步调时,须要输出用户名和暗号来确认用户的身份。 windows的apache用户认证 1.沿用文本文献寄存用户名和暗号时,其本领同前,但须要提防的是表白路途的目次名之间、目次名与文献名之间一致用斜线“/”划分,而不是反斜线“”。 2.沿用mysql数据库寄存用户名和暗号时,开始按下列本领将php 4.0.3动作apache的模块来运转,而后按上述“沿用数据库保存用户名和暗号的用户认证”的本领实行。 1)载入windows版的apache 1.3.12、php 4.0.3、mysql 3.2.32,将三个软硬件辨别解压、安置到c:pache、c:php4、c:mysql目次。 2) c:php4sapi目次有几个常用web效劳器的php模块文献,将个中php4apache.dll正片到apache的modules子目次(c:pachemodules)。 3)窜改apache的摆设文献c:pachenfhttpd.conf,减少以次几行: loadmodule php4_module modules/ php4apache.dll addtype application/x-httpd-php .php3 addtype application/x-httpd-php-source .phps addtype application/x-httpd-php .php 第一运用php4以apache的模块办法运转,如许本领举行用户认证,后三行设置php剧本步调的扩充名。 4)在autoexec.bat文献的path吩咐中减少php4地方路途“c:php4”,从新启用电脑。 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.