2013-06-21 3 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 с моего ноутбука, я не сталкиваюсь с теми же проблемами, что заставляет меня думать, что по какой-то причине отправляемая информация не обновляется. Но я не вижу, как и почему. Опять же, используется ли сторонняя библиотека или нет.

Мысли, предложения?

примечание: BasicAuth (см выше) является подклассом AFHTTPCLIENT

ответ

2

Ваш сервер может посылать некоторые печенье и IOS является ее хранения. Попробуйте удалить файлы cookie перед установкой нового имени пользователя и пароля. Здесь у вас есть фрагмент кода, который удаляет все файлы cookie. Имейте в виду, что в iOS файлы cookie являются приватными приложениями, поэтому их удаление не повлияет на другие приложения.

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