同僚と私は、両方のコードでバグに遭遇しました。私たちはたまたまログインページで作業しています。ネットワーク ライブラリ 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 のサブクラスです