【发布时间】:2014-03-28 19:35:24
【问题描述】:
应该是我吧。我可能正在做一些愚蠢的事情。我对 responseObject 感到困惑,所以整理了我能想到的最简单的演示。
我想在 iOS 应用程序中使用 AFNetworking 2 登录到远程服务器以获取 authToken。 我以为一切正常。 我可以登录并获得一个 AuthToken。
但是.....如果我注销然后以其他用户身份登录,我似乎得到了第一个用户 responseObject 而不是新用户。
我录制了一段短视频来演示该问题。这会并排显示 iOS 模拟器、xCode 调试器和 Web 服务器日志文件。你可以在这里查看:https://www.dropbox.com/s/f0zjdsj2mor0cjq/wrongresponsobject.mp4
重现步骤:
- 使用演示应用程序以 user1 身份登录,详细信息如下
- 使用以下详细信息以 user2 身份再次登录
每次尝试登录时,我都可以在服务器日志中看到该请求。 正在发布带有正确电子邮件和密码的正确请求。 服务器正在返回一个 201 响应,其中包含一些响应数据,包括 authToken。
在第二次登录时处理 *response 时,使用原来的 responseObject 而不是新的来匹配新的请求。
我有一个可用的演示服务器: 域名:apitest.jserve1.com/ 登录路径:/api/v1/session.json
测试用户帐户
user1@example.com / user1password
user2@example.com / user2password
我有一个连接到这个演示服务器的演示应用程序,你可以在这里下载 https://www.dropbox.com/s/zp62sjlb13z3g6q/WrongObjectResponseExample.zip
我是否遗漏了一些明显的东西?装傻? 如果是这样,那么如果您能告诉我我做错了什么,我将非常感激。
更新 - 已解决
问题在于该应用保留了上次登录的 cookie。最后,添加以下代码为我解决了这个问题。
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: networkServerAddress];
for (NSHTTPCookie *cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
通过 stackoverflow.com/questions/10984374/how-to-manage-sessions-with-afnetworking
【问题讨论】:
标签: ios afnetworking afnetworking-2