在提到的apache 2.4 文档中,当使用mod_authn_dbd进行身份验证时,可以从db表中获取其他列:
如果httpd是针对APR 1.3.0或更高版本构建的,则查询语句返回的第一行中的任何其他列值将存储为名称格式为AUTHENTICATE_COLUMN的环境变量。
但是,例如“phpinfo”的输出不显示其他环境变量。
我们使用
openSUSE - 13.2(x86_64)
apache2 - 2.4.10-28.1
APR的-util1-DBD-MySQL的
的MySQL表:
CREATE TABLE IF NOT EXISTS `USERS` (
`USER` varchar(20) NOT NULL,
`PASSWORD` varchar(150) NOT NULL,
`KUNDE` varchar(20) NOT NULL,
`TIMESTAMP` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`REMOTE_IP` varchar(15) NOT NULL,
`CLIENT_IP` varchar(15) NOT NULL,
PRIMARY KEY (`USER`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Apache配置:
# mod_dbd configuration
DBDriver mysql
DBDParams "host=127.0.0.1 dbname=Auth port=3306 user=Auth pass=XXXXXXXX"
DBDMin 2
DBDKeep 4
DBDMax 10
DBDExptime 60
Alias /test2/ "/path/test2/"
<Directory "/path/test2/">
Options Indexes
AllowOverride All
require ip 192.168.xxx.0/24 10.xxx.xxx.0/24
</Directory>
<Directory "/path/test2/secure">
AuthType Basic
AuthName "Test"
AuthBasicProvider socache dbd
AuthnCacheProvideFor dbd
AuthnCacheContext Test
AuthnCacheTimeout 60
AuthDBDUserPWQuery "SELECT PASSWORD FROM USERS WHERE USER = %s"
</Directory>
也许有人可以提供帮助并知道如何使用它。
感谢。
答案 0 :(得分:0)
也许是因为您的查询中没有其他列?试试例子
AuthDBDUserPWQuery "SELECT KUNDE, PASSWORD FROM USERS WHERE USER = %s"
请注意,这种方法并非真正安全,因为您似乎存储了纯文本密码。