2013-06-21 37 views
0

一位同事和我偶然發現了我們兩個代碼中的錯誤。我們碰巧都在登錄頁面上工作。我正在使用聯網庫AFNetworking連接到一個外部源,它告訴用戶是否實際註冊過。這位朋友也是(但沒有任何外部圖書館)。 (代碼適用於ios。)可以隨時登錄

我們都遇到了同樣的問題:在進行有效調用之後,所有事情都按預期進行。但是如果我們再次打電話是無效的(例如,錯誤的用戶名和/或密碼),我仍然可以登錄。

爲什麼?我們沒有保存任何信息。

下面是一些代碼:

BasicAuth * manger = [BasicAuth sharedManager]; 
    manger = nil; 
    [[BasicAuth sharedManager] setUsername:@"bad_username" andPassword:@"wrong"]; 

    [[BasicAuth sharedManager] getPath:@"https://stackoverflow.com/users/tokens" 
          parameters:nil 
          success:^(AFHTTPRequestOperation *operation, id responseObject) { 
           NSLog(@"operation = %@", [responseObject description]); 
           NSError *error = nil; 
           /* 
            */ 
           if (error) { 
            NSLog(@"Error serializing %@", error); 
           } 


          } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
           if (operation.response.statusCode == 500) { 

           } else { 
            NSData *jsonData = [operation.responseString dataUsingEncoding:NSUTF8StringEncoding]; 

           //  NSString *errorMessage = [ objectForKey:@"error"]; 

            NSLog(@"We have an issue %@", [error description]); 

           } 
          }]; return YES; 

如果我把這個相同的代碼,但是有一個正確的用戶名/密碼,然後調用上面的代碼,那麼我仍然可以登錄的,我回來的信息是與我發送「良好」請求時一樣。另外,當我嘗試使用我的筆記本電腦上的curl發出登錄請求時,我不會遇到同樣的問題,這使我認爲,出於某種原因,發送的信息未被更新。但我看不出如何或爲什麼。再次,這是第三方庫是否正在使用。

想法,建議?

注:基本驗證(見上文)是AFHTTPCLIENT

回答

2

您的服務器可能會發送一些餅乾和iOS是存儲它的子類。 嘗試在設置新的用戶名和密碼之前刪除cookie。 這裏有一個刪除所有cookie的代碼片段。請記住,在iOS中,Cookie是應用程序專用的,因此刪除它們不會影響其他應用程序。

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
NSArray *cookies = [storage cookies]; 
for (NSHTTPCookie *cookie in cookies) 
{ 
    [storage deleteCookie:cookie]; 
} 
相關問題