1

これは多くの人にとって些細なことかもしれませんが、私のユースケースに適したフローを理解することができませんでした。モバイル アプリ (IOS および Android) 用の API を構築しています。ほとんどの Web アプリケーションと同様に、API には、ログインしたユーザーのみがアクセスできる特定の機能/ページ (Web サイトに関して) があります。セッションは通常、API 構造では推奨されないため、API でそのようなものを追跡する方法を知りたいです。私の質問は、それをどのように特定するかです:

  1. ユーザーはクライアント側からログインしています。そのため、ユーザーがユーザー名とパスワードを送信してログインすると、サーバー側はDBから検証した後、ユーザーを承認します。この時点で、将来の識別のために各要求で私に送信する必要があるクライアントに何を送信する必要がありますか?
  2. 実際のユーザーのリクエストを取得していることを確認します...たとえば、ユーザー A はユーザー B の情報を要求できません。言い換えれば、私が考えていることは、UserID (または暗号化も必要なトークン) に基づいて何かを行うと、誰かが何らかの方法で私のセキュリティを破り、別のユーザーの ID のコンテンツを要求できるということです...どのようにこれを確保しますか?

基本的に、ステートレスな方法で状態を維持するためのガイダンスを探しています。

4

2 に答える 2

1

ユーザーが正常に認証された後、session_id を送信してみてください。これは、現在のタイムスタンプでソルトされた user_name からの md5 ハッシュとして作成される場合があります。

サーバー側では、session_idをユーザーにマップするテーブルsession_data(session_id、user_id、last_access_time、session_data)を作成できます。last_access_time が古すぎると、セッションは廃止されます。

このアプローチは、リクエストのたびに session_data を更新する必要があるため、ユーザーとの激しいやり取りには最適ではありません。

この場合、そのようなテーブルは任意の高速ストレージに移動できます。

于 2014-12-15T13:34:22.153 に答える
0

API 開発ではログイン状態などの概念はありません。そのためステートレスです。すべてのリクエストを認証する必要があります(したがって、すべてのリクエストでユーザー名とパスワードを送信してください)。

注: セッションを持つことはできますが、REST クライアントによって維持されるため、API はそれについて何も知りません。

于 2014-12-15T16:07:28.457 に答える