2012-06-11 14 views
54

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

AFNetworkingが後続のリクエストごとに自動的にセッションIDを送信するのか、それとも何らかの形で私自身が世話をする必要があるのでしょうか?

ご要望に応じて、リクエストの認証方法に関するバックエンドの管理はできません。私は、サーバーと通信するクライアントを構築するだけです。

答えて

114

ログインするとはい、あなたのセッションIDは、(重要な細部がの確認する)限り、次の要求が送信される前にクッキーが期限切れにならないよう、自動的に送信されなければなりません。 AFNetworkingが使用するNSURLConnectionは、これの詳細をあなたのために処理します。

バックエンドでAFNetworkingはNSURLConnectionを使用しており、自動的にNSHTTPCookieStorageにセッションを保存します。あなたは、クッキーストレージを乱用して、適切と思われるようにクッキーを操作または削除することができます。

サービスにログインしていないようにしたい場合は、そのドメインに関連付けられているセッションCookieを削除するだけです。あなたがすでにログインしていて、再度ログインしようとすると、私が働いているサービスの一部がエラーになります。また、ログイン状態を確認する方法もありませんでした。クイックフィックス、URLからクッキーを取得し、それらを削除します。

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

From the developer himself

+0

あなたがダウンした場合は、私の答えが間違っている理由についての回答を残してください。 –

+2

私はあなたの答えに感謝し、答えを投票しなかった。 –

+0

これは私の印象でもあり、これはAFNetworkingとNSURLConnectionの仕組みのいくつかの側面を明確にしています。ご回答有難うございます。 –

4

これは、対話しているサービスによって指定された仕様によって異なります。私は同様のサービスで働いており、彼らはセッションを有効に保つために、int "1"を送信することで数秒ごとにサービスをポーリングする必要があることをドキュメントに明示しています。

可能であれば、私たちが読むことができるサービス名または参照を投稿してください。それが企業のプライベートAPIであれば、戻ってくるセッションIDの使用を記述していなければなりません。


基礎となる技術は、あなたが他の質問については、この答えを、これらのクッキーを永続化したいがあれば、それの世話をします。

Persisting Cookies In An iOS Application?

+0

は、あなたの答えをいただき、ありがとうございます。これは実際にプライベートAPIであり、セッションベースです。私の質問は、セッションがAFNetworkingやiOS自体によってどのように管理されるかです。セッションIDを持つCookieを受け取った場合、セッションが終了するまで、後続のリクエストごとに自動的に送信されますか?私の答えを知りたいのです。 –

+0

ねえバート、私はちょうど私の答えを更新しました。はい、Cookieの処理は基盤技術によって行われていることがわかりました。私たちはそれについて心配する必要はありません。 – doNotCheckMyBlog

+0

何か? Downvotersはこれが間違った答えだと思う理由を書き留めますか? – doNotCheckMyBlog

関連する問題