您當(dāng)前所在位置:
首頁(yè) →
服務(wù)器 →
WEB服務(wù)器 →
用Apache與Mysql整合實(shí)現(xiàn)基本的身份認(rèn)證
用Apache與Mysql整合實(shí)現(xiàn)基本的身份認(rèn)證
時(shí)間:2015-06-28 00:00:00
來(lái)源:IT貓撲網(wǎng)
作者:網(wǎng)管聯(lián)盟
我要評(píng)論(0)
- Apache來(lái)實(shí)現(xiàn)基本的用戶身份認(rèn)證有很多種方式,比如最常見(jiàn)的txt文本和DBM格式,但在負(fù)載很重的server上這些都不是理想的方法,文本的形式是基于平面的,性能很差而且也不安全;DBM好些但在千或萬(wàn)級(jí)用戶時(shí)還是力不從心,于是用database做后臺(tái)存儲(chǔ)則是很好的方法比平面搜索更有效而且安全,用戶口令以DES加密形式存儲(chǔ)在數(shù)據(jù)庫(kù)的表中。
這種實(shí)現(xiàn)要?dú)w功于Apache本身出色的模塊化結(jié)構(gòu)以及開(kāi)放的DSO方式,可以使開(kāi)發(fā)人員完成大量的第三方模塊,并擴(kuò)充Apache的功能。我在本文中只寫(xiě)了用Mysql做后臺(tái)存儲(chǔ),此外還可用Postgresql,Oracle等來(lái)完成,原理一樣,都是用各自的模塊。
讓我們開(kāi)始吧。先去modules.apache.org(這可是Apache第三方模塊的大本營(yíng))找到mod_auth_mysql。會(huì)有兩個(gè)我們要用DSO那個(gè),事實(shí)上直接去ftp://ftp.kcilink.com/pub/下一個(gè)mod_auth_mysql.c.gz就行。把它解開(kāi)是一個(gè)mod_auth_mysql.c,我們用apxs來(lái)生成DSO模塊(前題是你用DSO模式編譯的Apache)
apxs -c -i -a -L/usr/local/lib/mysql -lmysqlclient >-lm mod_auth_mysql.c
即可。
這里注意一定要這么寫(xiě)-L/usr/local/lib/mysql是mysql的客戶庫(kù)位置,我假定mysql是用的缺省安裝)。如果不加在起動(dòng)Apache時(shí)會(huì)報(bào)錯(cuò),無(wú)法裝載此模塊。
好,看看httpd.conf中應(yīng)該有LoadModule mysql_auth_module libexec/mod_auth_mysql.so和AddModule mod_auth_mysql.c這兩句了,重起Apache也不應(yīng)該有問(wèn)題。
然后我們進(jìn)入mysql。
mysql>create database auth;
mysql>use auth;
mysql> create table mysql_auth (
-> user_name char(20) not null,
-> user_passwd char(25),
-> groups char(25),
-> primary key (username) );
注意字段名一定是user_name和user_passwd這個(gè)。再插入幾條記錄:
mysql> insert into mysql_auth values('xingfei2',encrypt("abcde"),'xingfei');
Query OK, 1 row affected (0.00 sec)
mysql> insert into mysql_auth values('xingfei',encrypt("abcde"),'xingfei');
Query OK, 1 row affected (0.00 sec)
這里abcde是口令,用encrypt函數(shù)來(lái)進(jìn)行加密,用的是DES算法-這是和unix的password等同的算法,而不是mysql本身加密的password()函數(shù)。
最后在要保護(hù)的目錄里建一個(gè).htaccess(別忘了把AllowOverride all打開(kāi))內(nèi)容如下:
authname "xingfei"
authtype basic
AuthMySQLHost localhost ---mysql主機(jī)名
authmysqluser root ---mysql用戶
authmysqlpassword abc ---mysql用戶的口令
AuthMySQLDB auth ---用戶所用的庫(kù)-也就是我們建的庫(kù)
AuthMySQLUserTable mysql_auth ---所用的表
AuthMySQLGroupField groups ---用戶組的字段名
require group xingfei
require user xingfei
可以把用戶都放在一個(gè)組里-只要是這個(gè)組里的用戶即可通過(guò)認(rèn)證。也可require單個(gè)或多個(gè)用戶。關(guān)鍵詞標(biāo)簽:基本,實(shí)現(xiàn),整合,用戶,
相關(guān)閱讀
熱門(mén)文章
ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈
IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin
在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略
win2000server IIS和tomcat5多站點(diǎn)配置
人氣排行
XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法
WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置
訪問(wèn)網(wǎng)站403錯(cuò)誤 Forbidden解決方法
如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù)
Server Application Unavailable的解決辦法
報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法
Windows Server 2003的Web接口
http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)