0

我和一位同事偶然发现了我们两个代码中的错误。我们碰巧都在登录页面上工作。我正在使用网络库 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 发出登录请求时,我并没有遇到同样的问题,这让我认为,由于某种原因,正在发送的信息没有被更新。但我看不出如何或为什么。同样,这与是否使用 3rd 方库有关。

想法、建议?

注意:BasicAuth(见上文)是 AFHTTPCLIENT 的子类

4

1 回答 1

2

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

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [storage cookies];
for (NSHTTPCookie *cookie in cookies)
{
    [storage deleteCookie:cookie];
}
于 2013-06-21T08:57:55.160 回答