• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用Apache與Mysql整合實現基本的身份認證

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    作者:fei Apache來實現基本的用戶身份認證有很多種方式,比如最常見的txt文本和DBM格式,但在負載很重的server上-這些都不是理想的方法,文本的形式是基于平面的, 性能 很差而且也不 安全 ;DBM好些但在千或萬級用戶時還是力不從心,于是用database做后臺存

    作者: fei

    Apache來實現基本的用戶身份認證有很多種方式,比如最常見的txt文本和DBM格式,但在負載很重的server上-這些都不是理想的方法,文本的形式是基于平面的,性能很差而且也不安全;DBM好些但在千或萬級用戶時還是力不從心,于是用database做后臺存儲則是很好的方法-比平面搜索更有效而且安全,用戶口令以DES加密形式存儲在數據庫的表中。 
    這種實現要歸功于Apache本身出色的模塊化結構--以及開放的DSO方式,可以使開發人員完成大量的第三方模塊,并擴充Apache的功能。我在本文中只寫了用Mysql做后臺存儲--此外還可用Postgresql,Oracle等來完成,原理一樣-都是用各自的模塊。 
    讓我們開始吧--先去modules.apache.org(這可是Apache第三方模塊的大本營)找到mod_auth_mysql--會有兩個我們要用DSO那個-事實上直接去ftp://ftp.kcilink.com/pub/下一個mod_auth_mysql.c.gz就行-好-把它解開是一個mod_auth_mysql.c-好-我們用apxs來生成DSO模塊(前題是你用DSO模式編譯的Apache)--apxs -c -i -a -L/usr/local/lib/mysql -lmysqlclient >-lm mod_auth_mysql.c即可--這里注意一定要這么寫---L/usr/local/lib/mysql是mysql的客戶庫位置,我假定mysql是用的缺省安裝)---如果不加在起動Apache時會報錯-無法裝載此模塊。 
    好-看看httpd.conf中應該有LoadModule mysql_auth_module libexec/mod_auth_mysql.so和AddModule mod_auth_mysql.c這兩句了,重起Apache也不應該有問題。 
    然后我們進入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這個。再插入幾條記錄: 
    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函數來進行加密,用的是DES算法-這是和unix的password等同的算法-而不是mysql本身加密的password()函數。 
    最后在要保護的目錄里建一個.htaclearcase/" target="_blank" >ccess(別忘了把AllowOverride all打開)內容如下: 
    authname "xingfei" 
    authtype basic 
    AuthMySQLHost localhost ---mysql主機名 
    authmysqluser root ---mysql用戶 
    authmysqlpassword abc ---mysql用戶的口令 
    AuthMySQLDB auth ---用戶所用的庫-也就是我們建的庫 
    AuthMySQLUserTable mysql_auth ---所用的表 
    AuthMySQLGroupField groups ---用戶組的字段名 
    require group xingfei 
    require user xingfei 
    可以把用戶都放在一個組里-只要是這個組里的用戶即可通過認證。-也可require單個或多個用戶。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>