0

シナリオ: ユーザーの認証。Cookie を取得し、他のリクエスト用に Cookie を設定します。罰金。私がすぐに理解できないのは、認証が失敗したときに次のビューを画面にプッシュせずに処理する方法です。私の応答が {errors:{password:does not match}} の場合、この応答も解析し、それに応じて条件を作成する必要がありますか? 単純に応答コードを確認する必要がありますか? 私はこれを難しくしています、私は言うことができます。次のビューを次の場所に追加しました。

  • (void)connectionDidFinishLoading:(NSURLConnection *)接続

そのため、接続が完了すると、自然に次のビューがプッシュされます。認証も失敗した場合、ここに到達しないようにしたいと思います。ここから次のビューをプッシュするべきではないかもしれません。じゃあどこ?

4

2 に答える 2

1

リダイレクト パスを確認します。これは、認証がうまくいったかどうかを示します。

- (NSURLRequest*)connection:(NSURLConnection*)connection willSendRequest:(NSURLRequest*)request redirectResponse:(NSURLResponse*)redirectResponse
{

    NSLog(@"willSendRequest (from %@ to %@)", redirectResponse.URL, request.URL);
    NSString *from =   [NSString stringWithFormat:@"%@",redirectResponse.URL];
    NSString *to =   [NSString stringWithFormat:@"%@",request.URL];
    if([from isEqualToString:serverSignInPath] )
      //logged=true
    else
     //logged=false
}
于 2011-07-27T07:42:23.127 に答える
0
NSURLResponse *HTTPResponse = (NSURLResponse *)response;
NSInteger statusCode = [HTTPResponse statusCode];

if (404 == statusCode || 500 == statusCode) {
    [connection cancel];
    [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] setNetworkActivityIndicatorVisible:NO];
}

このようにして、次のビューをプッシュするために connectionDidFinishLoading に到達することはありません。

Rails の応答は次のようになります。

render :json => @foo.to_json, :status => 404
于 2011-07-27T19:55:42.977 に答える