我有一个Linux服务器,我在其中安装了Lighttpd(1.4.28)。现在我已经为多个文件夹(13)设置了身份验证,如下所示:
auth.debug = 2
auth.backend = "plain"
auth.backend.plain.userfile = "/home/.lighttpdpasswd"
auth.require = (
"/test1" =>
(
"method" => "basic",
"realm" => "Password protected area",
"require" => "user=test1"
),
.
.
.
"/test13" =>
(
"method" => "basic",
"realm" => "Password protected area",
"require" => "user=test13"
),
)
lighttpdpasswd是这样的:
test1:test1
test2:test2
test3:test3
test4:test4
test5:test5
test6:test6
test7:test7
test8:test8
test9:test9
test10:test10
test11:test11
test12:test12
test13:test13
现在,对于从1到9的文件夹,身份验证非常有效,对于10,11,。。13使用正确的凭据拒绝访问!
这是lighttpd的错误吗?还是应该添加一些参数?
lighttpd mod_auth在遍历auth.require列表时进行简单的前缀匹配。它不寻找完全的路径匹配,只寻找前缀匹配。
一个解决方法是在auth.require列表中将较长路径放在较短路径之前,因此"test10"one_answers"test11"放在"test1"之前