HTTP摘要身份验证因URL参数失败(CakePHP)

时间:2010-05-14 10:26:45

标签: http authentication rest cakephp digest

我有一个RESTful API设置并使用mapResources()和parseExtensions()与CakePHP一起工作。身份验证由CakePHP的安全组件使用HTTP摘要式身份验证进行处理。

一切正常,除非我在网址中添加参数:

http://example.com/locations.xml?distance=4

导致身份验证始终失败。有什么想法吗?


修改 这似乎与parseDigestAuthData()中的正则表达式有关。这里有一个半修复:http://old.nabble.com/paginator-conflicts-with-Security-%3ErequireLogin---td16301573.html现在允许我使用格式:

http://example.com/locations/index/distance:4/.xml

但那不是RESTful,看起来并不那么漂亮。不过,越来越近了!

1 个答案:

答案 0 :(得分:2)

解决:

/cake/libs/controller/components/security.php:386

变化

preg_match_all('@(\w+)=([\'"]?)([a-zA-Z0-9=./\_-]+)\2@', $digest, $match, PREG_SET_ORDER);

preg_match_all('@(\w+)=([\'"]?)([a-zA-Z0-9=./?&\_-]+)\2@', $digest, $match, PREG_SET_ORDER);

现在可以以/locations.xml?key=value的形式传递参数,并启用摘要式身份验证。