2010-05-14 2 views
1

mapResources() 및 parseExtensions()를 사용하여 RESTful API를 설정하고 CakePHP로 작업했습니다. 인증은 HTTP 다이제스트 인증을 사용하는 CakePHP의 보안 구성 요소에 의해 처리됩니다. 항상 실패 할 수있는 인증을 야기URL 매개 변수 (CakePHP)로 HTTP 다이제스트 인증에 실패 함

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

을 : 나는 형태로 URL에 매개 변수를 추가하지 않으면

모든 것이 잘 작동합니다. 어떤 아이디어?


편집 : 이 parseDigestAuthData에서 정규식 문제가 될 것 같다(). 꽤 모든

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

그러나 그것은 편안하고 아니에요과 보이지 않는 : http://old.nabble.com/paginator-conflicts-with-Security-%3ErequireLogin---td16301573.html 지금 날이 형식을 사용할 수 있습니다 :이 여기에 반 수정합니다. 아직도, 가까이에!

+0

URL을보고 'RESTful이 아닙니다'라고 말할 수 있다고 생각되면 RESTful 시스템의 이점을 얻고 자한다면 REST에 대한 더 많은 정보를 제공하는 것이 좋습니다. –

+0

URI 내에서 어떤 종류의 동작을 지정하는 것이 나쁜 형식 (이 경우 인덱스)이었으며 사용하려는 동작을 정의하는 것이 HTTP 동사의 책임이라는 가정하에있었습니다. – NathanGaskin

+0

url은 불투명 한 식별자입니다. URL의 동사가 사용 된 동사와 모순되면 개발자에게 혼란을 주지만 실제로는 모든 REST 제약을 위반하지는 않습니다. 요청의 동작이 사용되는 HTTP 동사와 일치하지 않을 때 문제가 발생합니다. –

답변

2

는 해결 :

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

변화

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

매개 변수가 지금에 전달 될 수

preg_match_all('@(\w+)=([\'"]?)([a-zA-Z0-9=./?&\_-]+)\[email protected]', $digest, $match, PREG_SET_ORDER); 
다이제스트 인증을 사용하는 /locations.xml?key=value 양식.

관련 문제