タイトルが示すように、アプリケーションがサーバーと通信するiOSプロジェクトでAFNetworkingを使用しています。ユーザーがサインインすると、サーバーは成功フラグを送信して応答し、応答ヘッダーにはセッションIDが含まれます。
AFNetworkingが後続の要求ごとにセッションIDを自動的に送信するのか、それとも何らかの方法で自分で処理する必要があるのか疑問に思います。
ご参考までに、リクエストの認証方法に関して、バックエンドを制御することはできません。サーバーと通信するクライアントのみを構築しています。
はい。次のリクエストが送信される前に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];
}
これは、対話しているサービスによって指定された仕様に依存します。私は同様のサービスを使用しており、ドキュメントで明示的に述べています。セッションを有効に維持するには、int "1"を送信して数秒ごとにサービスをポーリングする必要があります。
ただし、可能であれば、サービス名または参照可能な参照を投稿してください。会社のプライベートAPIである場合、返されるセッションIDの使用を説明している必要があります。
基礎となるテクノロジーがそれを処理しますが、これらのCookieを保持したい場合は、他の質問に対するこの回答になります。