3

Rest でサポートされているアプリケーションのセッション管理について、さまざまな人から多くのコメントをいただいた後、ここで私がやろうと思ったことを説明します。

私のアプリケーションは、ブラウザー (通常の Web アプリとして) やモバイル デバイスからもアクセスできます。アプリケーションは、ブラウザベースのアプリ用に、最初はサーバーで http セッション管理を使用して作成されました。モバイル クライアントを取得すると同時に、モバイル デバイスとブラウザー クライアントにも同じサービス レイヤーを使用して、Rest Web サービスを実装しました。

ユーザーがモバイル デバイスでログインすると、一意の認証トークンが作成され、http セッションが生成されます。このトークン ID を使用して、このトークン ID をキー、値マップとしてアプリに保存します。後で、モバイル デバイスからのすべてのユーザー リクエストがこのトークンを返し、このトークンを使用してマップからセッションを取得し、続行することを期待します。

誰かが私のアプローチを見直して、それが問題ないかどうかを確認できますか?

ここで、2 つ目の質問があります。GWT の JsonPRequestBuilder を使用して、jersey-guice でバックエンド REST サービスを呼び出しています。GWT からの jsonp 呼び出し中に、このトークンを http ヘッダーで送信するにはどうすればよいですか?

4

2 に答える 2

2

「Session in REST」は矛盾した表現です。

ユーザーがモバイル デバイスでログインすると、一意の認証トークンが作成されます

OAuth を再発明したように見えますが、問題ないようです。

http セッションを生成し、このトークン ID を使用して http セッションをキー、値マップとしてアプリに保存します。

アクセスを高速化するためにサーバー側にキャッシュを保持することは問題ありませんが、それをsessionと呼ばず、特定のトークンにバインドしないでください (データがユーザー固有の場合はユーザーにバインドできます。意味がある場合、ユーザー ID は単純にキャッシュ キーの一部になります)。

そのキャッシュの有効期限や、キャッシュをクリーンアップしてメモリを解放する方法/時期については話しません。

ここで、2 つ目の質問があります。GWT の JsonPRequestBuilder を使用して、jersey-guice でバックエンド REST サービスを呼び出しています。GWT からの jsonp 呼び出し中に、このトークンを http ヘッダーで送信するにはどうすればよいですか?

@Arcadienが言ったように、JSONPは<script>ページに要素を挿入するだけなので、URLを制御することしかできないため、これは認証トークンを渡す必要がある/渡すことができる場所です(実際には安全ではありません)。
モバイルの「ネイティブ」アプリから JSONP を使用する理由を質問してもよろしいですか? 私の知る限り、UIWebViews などからの SOP の問題はありませRequestBuilderXMLHttprequest

于 2012-07-03T10:33:16.033 に答える
0

2番目の場合:JSONPでは、トークンをプレーンなhttpパラメーターとして追加する必要があります。通常のXMLHttpRequestを使用する場合、Requestなどのオブジェクトにアクセスすることはできません。したがって、どのような種類のヘッダーも設定できません。すべてをクエリ文字列に含める必要があります。

于 2012-07-03T08:19:42.197 に答える