1

私はウェブアプリに取り組んでいます。フロントエンドは RESTful API (SOA アーキテクチャと呼ばれます) を介してのみバックエンドとやり取りし、バックエンドはデータを JSON でフロントエンドに送信するだけです。

私の質問は次のとおりです。1) RESTful API を使用して承認を設計するのがベスト プラクティスですか? または、バックエンド コードで承認 (ユーザー -> ロール -> 特権) を確認するのが最善ですか? 例: 他の API を実行する前に毎回ユーザーに /checkPrivilege/{...} を尋ねますか?

2) 通常、RESTful API で機能と UI が異なる 3 つのプランを実装するにはどうすればよいですか? 例: API を使用して、このプランのユーザーを 5 人に制限しますか? それともバックエンド コードで実行しますか?

4

1 に答える 1

1

これは古い質問ですが、誰かが調べた場合に備えて、とにかくこれに答えます.

簡単な答えは、バックエンドを介して行うことです。要求している URI には、ユーザーに関する情報を含めないでください。セッション/識別データは、HTTP ヘッダーで送信する必要があります。

RESTful API は常に、index.php のようなフロント コントローラーを介してロードされます。これは、認証ツールをブートストラップして、残りのコードを実行する前に、すべてのページ リクエストの資格情報を確認する必要がある場所です。

これらの資格情報には、最小で、リクエストを行っているユーザーの一意の認証トークンが含まれている必要があり、このトークンはすべてのリクエストで送信する必要があります (ここでも、HTTP ヘッダーを介して送信することをお勧めします)。後日の不正アクセスを防ぐために、有効期限が切れる一時的なアクセス トークンを付与すると、ボーナス ポイントが付与されます。

ただし、簡単にするために、ユーザーごとに永続的な一意のトークンを使用しているとしましょう。次に、このトークンをユーザーに関する他のすべてのデータとともに保存します。他のデータには、ユーザーが属するアカウントの account_id が含まれている必要があります。

したがって、リクエストごとに次のようになります。

  1. HTTP ヘッダーからユーザー トークンを取得します
  2. そのトークンに基づいてユーザーを検索します。
  3. ユーザーが見つかった場合は、account_id を使用して、個人アカウントが関連付けられているマスター アカウントを検索します。
  4. 一致する場合は、アクセスを許可します

ただし、URL にこの情報を含めないでください。RESTful URL はステートレスです。

于 2013-07-20T06:48:38.403 に答える