0

场景:对用户进行身份验证。抓取 cookie,为其他请求设置 cookie。美好的。我无法立即弄清楚的是如何在身份验证失败而不将我的下一个视图推送到屏幕上时进行处理。如果我的响应是 {errors:{password:does not match}} 我应该也解析这个响应并相应地创建一个条件吗?我应该简单地检查响应代码吗?我让这变得困难,我可以说。我在以下位置添加了我的下一个视图:

  • (void)connectionDidFinishLoading:(NSURLConnection *)connection

因此,当连接完成时,它自然会推送下一个视图。如果身份验证也失败,我想阻止它到达这里。也许我不应该从这里推动我的下一个观点。那么在哪里?

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 回答