私のコントローラーメソッドは、従来のブラウザーリクエストを処理することと、マップされたリソースを使用してRESTクライアントを介して対話することの両方を目的としています。
ケース:これは、すべての検証をCakeモデルに集中させながら、Model::validationErrorsを抽出してjson応答に追加することで検証できる優れたajaxフォームを保持できるので便利です。フォームがajaxであるかどうかを気にしない場合、クライアント側のjavascriptを適用することはできず、フォームとサーバーは正常に通信します。
問題:多くのコントローラーアクションはController :: redirect()に依存しています。redirect()をオーバーライドしたり、beforeRedirect()を試したりすることで、ajaxリクエスト中にリダイレクトをJSON応答に変換する信頼できる方法が見つかりません。これは、「redirectUrl」=>「foo」のようなものを示します。ブラウザajaxの場合)は、javascriptロケーションリダイレクトを使用してユーザーを新しいURLに転送できます。
私はそれが機能していると思いましたが、許可されていないユーザーが出力を見ていなくても保護されたリソースを実行するためのアクセス権を持っていることに気付きました。