web-dev-qa-db-ja.com

AFNetworkingでセッションを管理する方法は?

タイトルが示すように、アプリケーションがサーバーと通信するiOSプロジェクトでAFNetworkingを使用しています。ユーザーがサインインすると、サーバーは成功フラグを送信して応答し、応答ヘッダーにはセッションIDが含まれます。

AFNetworkingが後続の要求ごとにセッションIDを自動的に送信するのか、それとも何らかの方法で自分で処理する必要があるのか​​疑問に思います。

ご参考までに、リクエストの認証方法に関して、バックエンドを制御することはできません。サーバーと通信するクライアントのみを構築しています。

55
Bart Jacobs

はい。次のリクエストが送信される前にCookieの有効期限が切れない限り、ログインするとセッションIDが自動的に送信されます(重要な詳細情報)。 AFNetworkingが使用するNSURLConnectionは、この詳細を自動的に処理します。

バックエンドでは、AFNetworkingはNSURLConnectionを使用しており、これは自動的にNSHTTPCookieStorageを更新してセッションを保存します。 Cookieストレージをいじって、適切と思われるCookieを操作または削除できます。

ログインしていないようにサービスに表示したい場合のように、そのドメインに関連付けられたセッションCookieを削除するだけで済みます。既にログインし、再度ログインしようとすると、私が使用したサービスの一部でエラーが発生します。また、ログインステータスを確認する方法もありませんでした。クイック修正、URLからCookieを取得して削除します。

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: networkServerAddress];
for (NSHTTPCookie *cookie in cookies) 
{
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}

開発者自身から

116

これは、対話しているサービスによって指定された仕様に依存します。私は同様のサービスを使用しており、ドキュメントで明示的に述べています。セッションを有効に維持するには、int "1"を送信して数秒ごとにサービスをポーリングする必要があります。

ただし、可能であれば、サービス名または参照可能な参照を投稿してください。会社のプライベートAPIである場合、返されるセッションIDの使用を説明している必要があります。


基礎となるテクノロジーがそれを処理しますが、これらのCookieを保持したい場合は、他の質問に対するこの回答になります。

iOSアプリケーションでCookieを保持しますか?

4
TeaCupApp