2014-01-24 18 views
0

我創造與NSURLCredentialPersistencePermanent的NSURLCredential,並用它如下認證的AFHTTPRequestOperation:AFNetworking 2.0:如何跨應用持久化NSURLCredential推出

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

一旦通過認證,證書不再需要設置上未來的行動。

但是,一旦我重新啓動應用程序,雖然憑證仍存在於[NSURLCredentialStorage sharedCredentialStorage]中,但下一個AFHTTPRequestOperation不再進行身份驗證並返回拒絕訪問的響應。

爲什麼AFNetworking不能識別存在於共享憑證存儲中的憑證?

回答

1

AFURLConnectionOperation(AFHTTPRequestOperation的超類)的shouldUseCredentialStorage屬性被默認記錄爲「YES」。當創建新操作時,此值由AFHTTPRequestOperationManager和它自己的shouldUseCredentialStorage值覆蓋。

由於AFHTTPRequestOperationManager中存在錯誤,shouldUseCredentialStorage從不初始化爲YES(即使其默認值記錄爲如此)。

解決方案(現在)是手動將請求或操作管理器的shouldUseCredentialStorage屬性設置爲YES。

Link to bug report on GitHub