1

mapResources() と parseExtensions() を使用して、RESTful API をセットアップし、CakePHP を操作しています。認証は、HTTP ダイジェスト認証を使用して CakePHP のセキュリティ コンポーネントによって処理されます。

次の形式でパラメーターを URL に追加しない限り、すべて正常に動作します。

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 ではなく、見栄えもよくありません。それでも、近づいて!

4

1 に答える 1

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 の形式で渡すことができるようになりました。

于 2010-05-17T08:54:38.947 に答える