使用apache认证的时候有个数据库认证,并支持mysql的认证,但他的认证不能满足特殊认证需要,比如:vbulletin论坛,这里扩展了mod_auth_mysql.c,使他能进行特殊需要的认证。
mod_auth_mysql.c
文件下载,然后编译安装:
/usr/local/httpd/bin/apxs -c -L/usr/local/mysql/lib/mysql -L/usr/lib -L/usr/local/lib -I/usr/local/mysql/include/mysql -I/usr/include -I/usr/local/include -lmysqlclient -lm -lz mod_auth_mysql.c
/usr/local/httpd/bin/apxs -i mod_auth_mysql.la
根据自己具体情况配置,整理用到了2个东西 mysqlclient 和 iconv ,请先装好这2个东西。
简单介绍:
在原mysql认证的基础上增加了对 vbulletin 论坛的用户表认证,当然你也可以用户其他比较特殊的表认证。
因为现在很多地方都是用了utf-8编码,所以使用icnov编码进行认证,这个可以使用 _LENDY_UTF 打开和关闭。
考虑到扩转性,应该把utf-8编码做为参数,有需要再改进。
使用配置方法:
在 [httpd.conf] 文件中增加:
LoadModule mysql_auth_module modules/mod_auth_mysql.so
使用 .htaccess 文件
AuthName “Members Area”
AuthType Basic
AuthMySQLEnable On
#AuthMySQLHost localhost
#AuthMySQLPort 3306
AuthMySQLSocket /tmp/mysql.sock
AuthMySQLUser username
AuthMySQLPassword password
AuthMySQLDB vb37
AuthMySQLUserTable user
#AuthMySQLUserCondition
AuthMySQLNameField username
AuthMySQLPasswordField password
AuthMySQLNoPasswd Off
AuthMySQLPwEncryption vb //这里是vbulletin论坛的认证方式,一定要用这个方式。
## AuthMySQLPwEncryption none | crypt | scrambled | md5 | aes | sha1
AuthMySQLSaltField salt
#AuthMySQLGroupTable user
###AuthMySQLGroupCondition
#AuthMySQLGroupField usergroupid
#AuthMySQLKeepAlive Off
AuthMySQLAuthoritative On
AuthMySQLCharacterSet utf8
require valid-user