3

REST ベースの Web サービス (restEASY を使用して Java で実装) を活用する、今後開発する iOS アプリケーションの概念実証に取り組み始めました。クライアント側のサービス ライブラリとして RestKit を使用し、ドキュメントといくつかの例を読んでいます。

大部分のサービスでは、ユーザーがユーザー名とパスワードで認証される必要があります。資格情報を含む JSON オブジェクトを受け入れる認証サービスが用意されているため、その部分は簡単です。私の質問は、サービスが認証が必要であると言ったときに、iOS ピースをどのように処理するかということです。

このシナリオを想像してみてください...

ユーザーがアプリを起動すると、ユーザーが認証する必要があることが認識されます。モーダル View Controller がポップアップし、ユーザーに認証を求め、リクエストを送信します。その後、ユーザーは一連の REST 呼び出しを問題なく行うことができます。最終的に、彼らは自分の電話の電源を切り (アプリはまだアクティブです)、1 時間ほど後に元に戻ります。ボタンをクリックして別の REST 呼び出しを開始しますが、この時点でサーバー側のセッションは期限切れになっています。

理想的には、サーバーが認証が必要であることを示していることを認識し、モーダル ビュー コントローラーを再度ポップアップできるようにしたいと考えています。しかし、RestKit はこれをサポートしていますか? サーバーがこのように応答したことを認識できる「グローバル応答ハンドラー」を登録する方法はありますか?

JSON でステータス コードを返すか、HTTP ステータス コードを使用できます。サービスには柔軟性があります。本当の問題は、クライアントでこれを理想的な方法で処理する方法です。そして、ユーザーを再認証したら、最初に送信しようとしたリクエストを再生する方法はありますか? それとも、再びアクションを開始する必要がありますか?

これが意味をなさない場合、または解決するのが非常に簡単な問題である場合は申し訳ありません。私は RestKit を使い始めたばかりなので、将来の問題を回避するためにこれを正しい方法で行っていることを確認したかったのです。あなたが提供できるアドバイス、コードサンプル、チュートリアルなどは大歓迎です。

4

1 に答える 1

3

古い認証トークンを送信する AppDelegate - (void)applicationDidBecomeActive:(UIApplication *)applicationまたは メソッドでサーバーにリクエストを送信することをお勧めします。- (void)applicationWillEnterForeground:(UIApplication *)applicationサーバーは、トークンが有効か無効かの応答を返すことができます。AppDelegate が RKObjectLoaderDelegate プロトコルを採用している場合、応答を処理できます。これにより、アプリケーションがアクティブになるたびに、ユーザーは必要に応じて再認証を求められます。

于 2012-12-14T16:38:23.737 に答える