Сбой аутентификации дайджеста HTTP с параметрами URL (CakePHP) - PullRequest
1 голос
/ 14 мая 2010

У меня есть RESTful API, настроенный и работающий с CakePHP с использованием mapResources () и parseExtensions (). Аутентификация обрабатывается компонентом безопасности CakePHP с использованием дайджест-аутентификации HTTP.

Все работает нормально, если я не добавлю параметры в URL, в виде:

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

Из-за чего проверка подлинности всегда завершается неудачей. Есть идеи?

<ч />

Edit: Это кажется проблемой с регулярным выражением в parseDigestAuthData (). Здесь есть полуфикс: http://old.nabble.com/paginator-conflicts-with-Security-%3ErequireLogin---td16301573.html, который теперь позволяет мне использовать формат:

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

Но это не RESTful и выглядит не очень красиво. Тем не менее, все ближе!

1 Ответ

2 голосов
/ 17 мая 2010

Решено:

/ торт / LIBS / контроллер / компоненты / 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 с включенной дайджест-аутентификацией.

...