gpt4 book ai didi

ios - 如何使用 AFNetworking 永久保存 cookie,直到应用程序从 iPhone 中删除?

转载 作者:技术小花猫 更新时间:2023-10-29 10:59:58 28 4
gpt4 key购买 nike

谁能告诉我如何使用 AFNetworking for iOS 永久保存 cookie?我使用的是 ios7,但我认为这应该无关紧要?

用例是,在成功通过网络服务进行身份验证后,它会为我提供两个 cookie,我需要将它们与每个请求一起传递。这些 cookie 永不过期,或从现在起数年后过期。只要每个 HTTPS 请求都有 cookie,用户就不必再次登录。我知道 AFNetworking 会自动保留 cookie,直到您退出该应用程序,但我需要 cookie 永远存在,直到用户从他们的手机中删除该应用程序。

1) 身份验证成功后,网络服务会递给我两个 cookie。我如何访问它们?我是直接进入 NSHTTPCookie 存储并通过其名称获取 cookie,还是有 AFNetworking“方式”来执行此操作?

2) 我如何永久保存这两个魔术 cookie,以便我的 AFHTTPClient 子类将这两个魔术 cookie 与每个请求一起传递?我只是将它们保存在钥匙串(keychain)或 NSUserDefaults 或 NSURLCredentialsStorage 中吗?或者是否有 AFNetworking 方法可以做到这一点?我在 AFNetworking 中读到了 setAuthorization() 方法,但我不确定这是否也适用于用户名/密码和 cookie。

3) 如何通过 AFNetworking 方式删除这些 cookie?

谢谢!!

最佳答案

AFNetworking 不会明确地对 cookie 执行任何操作,因此没有处理 cookie 的“AFNetworking 方式”。您将使用 NSHTTPCookie 和 NSHTTPCookieStorage。

在我的项目中,我不需要针对请求执行任何特定操作来让它们使用 cookie。如果您需要不同于 AFNetworking 默认提供的请求行为,您可以覆盖 AFHTTPClient 子类中的 requestWithMethod:path:parameters:

  1. 例如获取从 AFJSONRequest 返回的 cookie

    NSURLRequest* request = <some request returned from your AFHTTPClient subclass>
    AFJSONRequestOperation* op = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
    success:^(NSURLRequest* request, NSHTTPURLResponse* response, id userData) {
    NSArray* cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:url];
    }
    failure:...
  2. This answer说要在 cookie 上设置过期日期。如果您想自己保存 cookie,可以将 cookie 转换为字典并保存。 This answer说要使用钥匙串(keychain)。

    NSMutableDictionary* cookieDictionary = [NSMutableDictionary dictionaryWithDictionary:cookiePrefs];
    for (NSHTTPCookie* cookie in cookies) {
    [cookieDictionary setValue:cookie.properties forKey:cookie.name];
    }
  3. 从 NSHTTPCookieStorage 中删除 cookie。有一些 trickiness提防。如果您自己保存了 cookie,请删除存储的值。

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

关于ios - 如何使用 AFNetworking 永久保存 cookie,直到应用程序从 iPhone 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18555848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com