4

そこで、SOA の方針に沿って、Symfony2 で Web アプリケーションを開発しています (簡単な編集: Symfony2 はすごいです)。すべてのデータは、jQuery を利用したフロントエンドと、JSON 形式の Symfony2 バックエンドの間を行ったり来たりします。

Symfony2 は堅牢なセキュリティ システムを提供しますが、フォームの送信をインターセプトし、フォームにエンコードされた POST データを使用して認証の試行を処理する「セキュリティ レイヤー」に依存しているようです。JSON のみを使用するため、これはアプリケーションにとって問題です。私が立っている場所から、認証を除くすべてのリクエストとレスポンスに JSON を使用することは... 率直に言って、ブールのシートです。悪臭、悪臭、何とでも呼べる。

現在、Symfony2 では、リクエストのライフサイクルとコンシューマト レスポンスに関連する一連のイベントにフックするイベント リスナーを作成できます。これらのフックの 1 つを使用して、すべての POST リクエストに含まれる JSON をデコードします。これにより、関連するコントローラーは、php 配列を直接操作することだけを気にする必要があり、デコードやデシリアライズなどを行う必要がなくなります。

したがって、私たちの問題の核心は、「セキュリティ層」がフォーム送信から取得するフォームエンコードされた POST データを期待していることです (通常、バックエンドが最初に提供したページにあります)。JSON化されたデータから作成されたPHP配列をフィードするように設定されています。それでどうする?我々がすべき:

  • ファイル JSON から作成された配列を処理するために構築されたカスタム認証サービスを作成しますか?
  • リクエスト フックを微調整して、各リクエストのターゲット URI をチェックし、続いてリクエストの JSON を「セキュリティ レイヤー」が期待するフォーム エンコードされた文字列に変換しますか?
  • 「セキュリティレイヤー」を微調整して、JSON から PHP 配列に変換できるようにしますか?
4

1 に答える 1

1

独自の認証プロバイダーを作成するのは非常に簡単です。このクックブックの記事に従って、わずかに変更して、その例で使用されている WSSE の代わりに JSON 要求を処理できます。

于 2012-07-12T19:18:06.317 に答える