0

在开发 iOS 应用程序时,我有一个关于用户身份验证的问题。当用户启动应用程序时,将提示他们主屏幕,该屏幕将提示他们输入有效的用户名和密码。一旦他们的凭据得到验证,他们将能够访问应用程序的其余部分。我不知道如何创建此验证操作。我知道如何创建应用程序的可视化部分,但是,除此之外的任何东西我都不明白。简而言之,您如何创建一个需要用户提供凭据才能运行的应用程序?

4

2 回答 2

1

首先,如果未经身份验证就不能做有用的事情,Apple 将拒绝您的应用程序。其次,您从用户那里收集输入,然后您必须向您的服务器发送一个 NSURLConnection 以进行身份​​验证、观察响应并采取相应的行动。

于 2012-05-23T13:57:10.930 回答
0

考虑到您正在使用服务器进行验证,这取决于您的服务器的设置方式。您会NSURLConnection以这种方式使用,这就是我在自己的应用程序中的操作方式(根据您的参数量身定制):

+ (NSDictionary *)executeCallWithRequest:(NSMutableURLRequest *)request {
  NSHTTPURLResponse *response = nil;
  NSError *error = nil;
  NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
  NSString *dataString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  error = nil;
  NSDictionary *result = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error] : nil;
  if (error == nil && response.statusCode == 200) {
    NSLog(@"%i", response.statusCode);
  } else {
    NSLog(@"%@", dataString);
    NSLog(@"%@", [error localizedDescription]);
  }
  return result;
}

+ (NSDictionary *)executePostWithRequest:(NSMutableURLRequest *)request {
  request.HTTPMethod = @"POST";
  return [self executeCallWithRequest:request];
}

+ (NSDictionary *)loginUserWithCredentials:(NSDictionary *)userCredentials {
  NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", YOUR_URL]];
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

  NSString *requestFields = [NSString stringWithString:@""];
  for (NSString *key in [userCredentials allKeys]) {
    requestFields = [requestFields stringByAppendingFormat:@"(param name)&", key, [userCredentials objectForKey:key]];
  }

  //removes the trailing &
  requestFields = [requestFields substringToIndex:requestFields.length - 1];
  requestFields = [requestFields stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  NSData *requestData = [requestFields dataUsingEncoding:NSUTF8StringEncoding];
  request.HTTPBody = requestData;

  return [self executePostWithRequest:request];
}

在我的例子中,我用一个 JSON 编码的数组来响应。

于 2012-05-23T14:09:06.660 回答