0

我正在使用 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 无法识别共享凭证存储中存在的凭证?

4

1 回答 1

1

AFURLConnectionOperation(AFHTTPRequestOperation 的超类)的 shouldUseCredentialStorage 属性被记录为“默认情况下是”。当创建新操作时,AFHTTPRequestOperationManager 会使用其自己的 shouldUseCredentialStorage 值覆盖此值。

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

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

GitHub 上的错误报告链接

于 2014-01-27T20:08:37.850 回答