基於MySQL的Apache使用者認證例項(轉)

BSDLite發表於2007-08-11
基於MySQL的Apache使用者認證例項(轉)[@more@]apache版本:2.0.54
所需模組:mod_auth_mysql
以上軟體下載地址:

apache要求DSO方式編譯安裝,假定apache安裝在/usr/local/apache目錄下,mysql假設安裝在了/usr/local/mysql目錄下

首先下載mod_auth_mysql,下載地址:

[root@www software]# tar xzfv mod_auth_mysql-2.9.0.tar.gz
[root@www software]# cd mod_auth_mysql-2.9.0
[root@www mod_auth_mysql-2.9.0]# /usr/local/apache/bin/apxs -c -I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient -lm -lz mod_auth_mysql.c
[root@www mod_auth_mysql-2.9.0]# /usr/local/apache/bin/apxs -i mod_auth_mysql.la

然後編輯httpd.conf檔案
[root@www mod_auth_mysql-2.9.0]# vi /usr/local/apache/conf/httpd.conf
在httpd.conf中加入下列幾行:(以下是我的httpd.conf中的節選)

LoadModule mysql_auth_module modules/mod_auth_mysql.so



AuthType Basic
AuthMySQLHost localhost
AuthMySQLPort 3306
AuthMySQLDB database #要訪問的資料庫
AuthMySQLUser mysql_user #訪問資料庫的使用者
AuthMySQLPassword user_password #使用者密碼
AuthMySQLPwEncryption md5 #MD5加密
AuthMySQLEnable On
AuthMySQLUserTable user_table #要訪問的資料表
AuthMySQLNameField username #使用者名稱的欄位
AuthMySQLPasswordField password #密碼欄位
AuthMySQLGroupTable user_table #和使用者表一樣
AuthMySQLGroupField mygroup #使用者組欄位



從以上配置可以知道,這個模組實際上對使用者表沒有特別的要求,只要能找到 使用者名稱和對應的口令即可,如果需要對一個組作驗證,那麼需要 group 那個列。

由於公司內部所有的使用者都具有相同的組,所以,在驗證時一般採用組使用者來驗證,因此要在 plog_user 表新增列: user_group ,並把所有行的 user_group 列 update 為某固

定值,例如 mygroup 。

在這裡 groupTable 和 UserTable 是同一張表,如果需要一個使用者屬於多個 group ,那麼必須另外建立 group 表。

做好以上工作後,在需要加密的目錄新增 .htaccess 檔案如下:

[root@www MySQL]# more /home/bruce/html/software/.htaccess

AuthType Basic
AuthName "資源下載僅針對會員開放"
require valid-user

再重新啟動apache

[root@www mod_auth_mysql-2.9.0]# service httpd restart

採用這種認證措施後,使用者的瀏覽記錄都能在 Apache 日誌中保留下來,利用 awstats 等日誌統計軟體,都可以檢視到使用者的瀏覽量,使公司內部的知識流向都能清楚地檢視到。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947664/,如需轉載,請註明出處,否則將追究法律責任。

相關文章