2

社内で連絡先管理/CRMアプリケーションを使用していますが、これはWebベースのアプリであるため、Ajaxを多く使用しています。ほとんどのデータはJSONであり、バックエンドサーバーはデータベースとしてMySQLを使用してPHPを使用します...

ドラッグアンドドロップファイルのアップロード、クライアント側の画像のサイズ変更、アップロードされたファイルのクライアント側のスクリーンショットの作成などを使用できるため、そのミニAdobeAirバージョンを作成したいと思います。

サーバー側は栄光のJSONデータプロバイダーであるため、AIRアプリにデータを提供するようにサーバー側を適応させることができると思います。

私の問題は、認証をどのように処理するかです。
PHPでは、認証にセッションを使用します...
AIRの場合、特定のURLを呼び出して特定のJSONデータにアクセスするJSONWebサービスに似ていると思います。

少しブレインストーミングした後、これが私が思いついたものです:

  1. AIRアプリの起動時にユーザーがログインします
  2. サーバーはログインに成功すると一意のトークンを返し、そのトークンをDBに保存します
  3. AIRアプリは、サーバーに対して行うすべてのリクエストにそのトークンを追加する必要があります
  4. リクエストごとに、サーバーはトークンをDBに保存されているものと比較することにより、トークンの有効性をチェックします。

質問は、
これよりも良い方法はありますか?
トークンはどのくらいの期間有効である必要がありますか?
ログアウトせずに、サーバー上のトークンを無効にする機会を与えずに、アプリケーションを閉じるクライアントを処理するにはどうすればよいですか?

誰かが同じような状況にあったら、私はあなたの答えによって啓発されることを望んでいます...

ありがとう

4

1 に答える 1

4

これはどう:

  1. 認証時に、JSON データの PHP セッション ID を AIR アプリに返すだけです。
  2. AIR アプリはセッション ID を保存し、そのセッションのリクエストに使用します
  3. PHP がセッション ID を含むリクエストを受信したら、そのセッション ID に設定します。
  4. セッションは PHP によって簡単に維持され、通常どおり $_SESSION を使用できるようになります。

セッション ID 付きのリクエストを受け取ったら、次のようにします。

if(isset($_GET['sess_id'])){
  session_id($_GET['sess_id']);
  // where $_GET['sess_id'] is where you put the Session ID stored in your AIR APP
}

データベースでセッションを維持する必要がなくなるため、これはより良いかもしれません。

于 2009-11-17T23:09:11.413 に答える