【问题标题】:Resetting basic authentication credentials with AFNetworking使用 AFNetworking 重置基本身份验证凭据
【发布时间】:2012-01-27 19:17:34
【问题描述】:

我正在编写一个 REST 客户端(使用 AFNetworking)并且需要能够在应用程序的单个实例中触发新会话的创建。

换句话说,我想:
1 - 通过服务器进行身份验证
2 - 做一些 REST 调用
3 - 模拟“注销”
4 - 重新验证服务器
5 - 做更多的 REST 调用

AFNetworking 非常适合进行初始身份验证和 REST 调用,但我不知道如何清除会话并在同一实例中“重置”连接。

当我使用 ASIHTTP 时,我只是这样做了:
[ASIHTTPRequest clearSession];

有没有办法用 AFNetworking 做类似的事情?

【问题讨论】:

    标签: ios authentication rest reset afnetworking


    【解决方案1】:

    使用AFHTTPClient(参见示例项目中的 API 客户端)。

    可以使用-setAuthorizationHeaderWithUsername:password: 设置凭据。从该 HTTP 客户端创建的每个请求都有一个 Authorization HTTP 标头,有点像浏览器会话。

    当用户注销,或者您想清除凭据时,请执行-clearAuthorizationHeader

    【讨论】:

      【解决方案2】:

      更简单。

      [request setHTTPShouldHandleCookies:NO];
      

      【讨论】:

        【解决方案3】:

        据我所知,休息电话不是基于会话的。这意味着您无法在特定呼叫中模拟身份验证和注销会话。我认为你可以做的是对每个呼叫到终点进行身份验证。因此,对于每个端点(方法),您都对调用者进行身份验证。我认为这是你可以在一个安静的系统中做的赌注。

        【讨论】:

        • 嗯,我又玩了一点,看起来刷新 cookie 缓存似乎对我有用。: NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *cookies = [cookieStorage cookies]; for (NSHTTPCookie *cookie in cookies) { [cookieStorage deleteCookie:cookie]; NSLog(@"已删除的 cookie"); }
        • 这个 cookie 提示非常有用。谢谢。
        猜你喜欢
        • 1970-01-01
        • 2012-09-08
        • 2011-11-12
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2010-10-03
        • 2013-10-06
        • 1970-01-01
        相关资源
        最近更新 更多