真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Apache基于MySQL的身份驗(yàn)證(轉(zhuǎn))

Apache基于MySQL的身份驗(yàn)證(轉(zhuǎn))[@more@]

本文介紹在Apache中實(shí)現(xiàn)用戶身份驗(yàn)證的方法,討論如何在MySQL數(shù)據(jù)庫中保存驗(yàn)證信息,然后通過mod_auth_mysql模塊實(shí)現(xiàn)身份驗(yàn)證。

成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為平遙等服務(wù)建站,平遙等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為平遙企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

一、概述

   前文討論了在身份驗(yàn)證中使用數(shù)據(jù)庫的方法,具體介紹了mod_auth_db模塊和DB文件的使用。這里要介紹的是如何使用非常流行的MySQL數(shù)據(jù)庫保存身份驗(yàn)證信息,再通過mod_auth_mysql訪問MySQL數(shù)據(jù)庫實(shí)現(xiàn)身份驗(yàn)證。

  1.1 關(guān)于MySQL

   MySQL是一種優(yōu)秀的數(shù)據(jù)庫服務(wù)器,具有體積小速度快的特點(diǎn)。MySQL以GPL方式發(fā)行,它的主頁在http: //www.mysql.com/。MySQL缺少某些昂貴的大型數(shù)據(jù)庫所提供的功能,比如存儲(chǔ)過程、觸發(fā)子等等,但它具備了大多數(shù)中小型工程所需要的基本功能。另外,它還有一些非常實(shí)用的特色,比如可用于SQL命令的正則表達(dá)式等。

   由于MySQL是免費(fèi)的,而且其表現(xiàn)又如此不俗,在UNIX家族的操作系統(tǒng)上它是很受歡迎的數(shù)據(jù)庫——特別是對于那些預(yù)算有限的用戶來說。另外請注意,MySQL也有在Windows上運(yùn)行的版本。

  1.2 關(guān)于mod_auth_mysql模塊

   我們可以使用mod_auth_mysql模塊把用戶名字和密碼保存到MySQL數(shù)據(jù)庫,然后直接使用它們進(jìn)行身份驗(yàn)證。

   使用這種方法除了能夠提高數(shù)據(jù)訪問速度之外,還有其他許多好處。例如,假設(shè)用戶信息原來保存在數(shù)據(jù)庫中,使用文本文件進(jìn)行密碼驗(yàn)證時(shí)必須把用戶名字和密碼再復(fù)制一份,這樣你就得在兩個(gè)地方維護(hù)同樣的數(shù)據(jù),如果這兩份數(shù)據(jù)不是同步更新,用戶就有可能不能登錄。

   反過來,如果使用的是mod_auth_mysql,我們就可以直接用數(shù)據(jù)庫中的用戶信息進(jìn)行身份驗(yàn)證,此時(shí)用戶信息只需一份就足夠了,用戶名字和密碼可以用SQL命令更新,不會(huì)出現(xiàn)使用文本文件時(shí)可能遇到的問題。另外,要修改用戶所屬的組也很方便。

二、安裝和配置

   要獲得mod_auth_mysql模塊或者查看它的詳細(xì)資料,請?jiān)L問http://bourbon.netvision.net.il/mod_auth_mysql/。

   mod_auth_mysql可以編譯成DSO(Dynamic Shared Object,動(dòng)態(tài)共享對象),然后只需通過配置指令即可將它安裝到服務(wù)器上。關(guān)于DSO的更多說明,請參見Apache指南:新手安裝必讀。

   配置mod_auth_mysql模塊時(shí),我們必須告訴它要用哪一個(gè)數(shù)據(jù)庫來進(jìn)行身份驗(yàn)證,以及哪一個(gè)表、什么字段包含了驗(yàn)證用的信息。下面是配置mod_auth_mysql時(shí)必須了解的配置指令:

Auth_MySQL_Info [host] [user] [password]

   這個(gè)指令聲明數(shù)據(jù)庫在哪一個(gè)服務(wù)器上運(yùn)行以及訪問這個(gè)數(shù)據(jù)庫應(yīng)該使用的用戶名字和密碼。只有當(dāng)數(shù)據(jù)庫不在localhost(即本地機(jī)器)上運(yùn)行或者訪問數(shù)據(jù)庫的不是httpd用戶時(shí),我們才需要使用這個(gè)指令。

   如果所有的身份驗(yàn)證操作都使用同一個(gè)數(shù)據(jù)庫,那么你可以使用下面這個(gè)指令:

Auth_MySQL_General_DB [數(shù)據(jù)庫名字]

   否則,如果對不同目錄的身份驗(yàn)證操作使用不同的數(shù)據(jù)庫,你可以忽略這個(gè)指令,然后在各個(gè)的目錄中指定所用數(shù)據(jù)庫。

   下面介紹的幾個(gè)指令既可用于httpd.conf配置文件,也可用于各個(gè)目錄的.htaccess文件。請參見Using .htaccess Files with Apache了解更多信息。

   注意在為目錄設(shè)置密碼保護(hù)時(shí)可以應(yīng)用通常使用的指令,如下所示:

AuthType Basic

AuthName "Members Only"

require group admin

Auth_MySQL_DB [數(shù)據(jù)庫名字]:聲明使用哪一個(gè)數(shù)據(jù)庫中的信息進(jìn)行身份驗(yàn)證。

Auth_MySQL_Password_Table [密碼表的名字]:聲明數(shù)據(jù)庫中哪一個(gè)表包含密碼信息。除非特別聲明,否則默認(rèn)包含用戶名字的字段是“username”,包含密碼的字段是“password”。但我們可以按照下面介紹的方法指定另外的字段。

Auth_MySQL_Group_Table [保存組信息的表]:一般地,我們可以把用戶所屬組的信息(groups字段)和用戶名字、密碼保存到同一個(gè)表中。但是如果有必要把它保存到獨(dú)立的表,這里可以指定該表的名字。

Auth_MySQL_Username_Field [用戶名字字段]:如果保存用戶名字信息的字段不是“username”,可以用這個(gè)指令指定實(shí)際使用的字段名字。

Auth_MySQL_Password_Field [密碼字段]:如果保存密碼的字段不是“password”,可以用這個(gè)指令指定實(shí)際使用的字段名字。

Auth_MySQL_Group_Field [用戶所屬組的字段]:如果保存組信息的字段不是“groups”,可以用這個(gè)指令指定實(shí)際使用的字段名字。

Auth_MySQL_Encrypted_Passwords on/off:告訴mod_auth_mysql模塊保存在數(shù)據(jù)庫中的密碼是否經(jīng)過加密。默認(rèn)on,即假定數(shù)據(jù)庫中保存的密碼是經(jīng)過加密的。

   還有其他一些指令,不過經(jīng)常要用到的就是上面這些。下面是.htaccess文件的一個(gè)例子:

Auth_MySQL_Info localhost db_user db_password

Auth_MySQL_DB authentication

Auth_Mysql_Password_Table passwords

AuthType Basic

AuthName "Members Only"

require valid-user

   上例假定保存用戶名字的字段是username,密碼經(jīng)過加密再保存到password字段。

三、其他

   只要按照上面介紹的方法設(shè)置好了.htaccess文件,訪問該目錄下面的頁面時(shí)就會(huì)出現(xiàn)密碼輸入窗口。對于用戶來說,不同的密碼保護(hù)實(shí)現(xiàn)方法并沒有什么差別。

   你可以使用任何自己熟悉的數(shù)據(jù)庫管理工具管理用戶信息,目前似乎還沒有象dbmmanage一樣從命令行管理數(shù)據(jù)庫里用戶信息的簡單工具。

   但我們可以通過Perl和DBI操作數(shù)據(jù)庫。下一篇文章要討論的就是用Perl管理密碼文件的諸多優(yōu)點(diǎn)。用Perl管理密碼的方法實(shí)在很多,所以讓它單獨(dú)成文應(yīng)該是比較合適的。

   結(jié)束語:使用mod_auth_mysql,我們可以把用戶名字、密碼和所屬組信息保存到MySQL數(shù)據(jù)庫。MySQL是一種小型、快速、免費(fèi)的數(shù)據(jù)庫服務(wù)器,大多數(shù)流行的操作系統(tǒng)上都有MySQL的相應(yīng)版本
本文名稱:Apache基于MySQL的身份驗(yàn)證(轉(zhuǎn))
地址分享:http://weahome.cn/article/pjsegd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部