可以随时登录

时间:2013-06-21 04:43:39

标签: iphone login afnetworking

一位同事和我在我们的两个代码中偶然发现了错误。我们碰巧都在登录页面上工作。我正在使用网络库AFNetworking连接到外部源,它告诉用户是否已实际注册。这位朋友同样(但没有任何外部图书馆)。 (代码适用于ios。)

我们都遇到了同样的问题:在进行有效通话后,一切都按预期进行。但如果我们拨打另一个无效的电话(例如,错误的用户名和/或密码),我仍然可以登录。

为什么呢?我们没有保存任何信息。

以下是一些代码:

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

   [[BasicAuth sharedManager]  getPath:@"/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的子类

1 个答案:

答案 0 :(得分:2)

您的服务器可能正在发送一些cookie,iOS会存储它。 尝试在设置新用户名和密码之前删除cookie。 这里有一个删除所有cookie的代码片段。请记住,在iOS中,cookie是应用程序私有的,因此删除它们不会影响其他应用程序。

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