AFNetworking 2.0:如何在应用程序发布期间坚持NSURLCredential

时间:2014-01-24 22:47:35

标签: macos afnetworking-2 nsurlcredential

我正在使用NSURLCredentialPersistencePermanent创建NSURLCredential并使用它来验证AFHTTPRequestOperation,如下所示:

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSURLCredential *credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
[operation setCredential:credential];

经过身份验证后,不再需要在将来的操作中设置凭证。

但是,一旦我重新启动应用程序,虽然凭证仍然存在于[NSURLCredentialStorage sharedCredentialStorage]中,但下一次AFHTTPRequestOperation不再经过身份验证并返回拒绝访问的响应。

为什么AFNetworking不识别共享凭证存储中存在的凭证?

1 个答案:

答案 0 :(得分:1)

AFURLConnectionOperation(AFHTTPRequestOperation的超类)的shouldUseCredentialStorage属性默认记录为“YES”。“创建新操作时,AFHTTPRequestOperationManager将使用自己的shouldUseCredentialStorage值覆盖此值。

由于AFHTTPRequestOperationManager中的错误,shouldUseCredentialStorage永远不会初始化为YES(即使其默认值记录如此)。

解决方案(目前)是手动将请求或操作管理器的shouldUseCredentialStorage属性设置为YES。

Link to bug report on GitHub