我正在使用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不识别共享凭证存储中存在的凭证?
答案 0 :(得分:1)
AFURLConnectionOperation(AFHTTPRequestOperation的超类)的shouldUseCredentialStorage属性默认记录为“YES”。“创建新操作时,AFHTTPRequestOperationManager将使用自己的shouldUseCredentialStorage值覆盖此值。
由于AFHTTPRequestOperationManager中的错误,shouldUseCredentialStorage永远不会初始化为YES(即使其默认值记录如此)。
解决方案(目前)是手动将请求或操作管理器的shouldUseCredentialStorage属性设置为YES。