我有一个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,看起来并不那么漂亮。不过,越来越近了!
答案 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的形式传递参数,并启用摘要式身份验证。