一位同事和我在我们的两个代码中偶然发现了错误。我们碰巧都在登录页面上工作。我正在使用网络库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的子类
答案 0 :(得分:2)
您的服务器可能正在发送一些cookie,iOS会存储它。 尝试在设置新用户名和密码之前删除cookie。 这里有一个删除所有cookie的代码片段。请记住,在iOS中,cookie是应用程序私有的,因此删除它们不会影响其他应用程序。
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [storage cookies];
for (NSHTTPCookie *cookie in cookies)
{
[storage deleteCookie:cookie];
}