【问题标题】:Application User Authentication应用程序用户认证
【发布时间】:2012-05-30 02:03:05
【问题描述】:

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

【问题讨论】:

  • 为了补充这个问题,Paypal、Mint.com、Facebook、Twitter 和 App Store 等应用程序使用凭据来验证用户。这不可能是那么复杂或知道如何做到这一点的大秘密。我只需要一些帮助来为我的应用程序开发做这件事。令我惊讶的是,苹果还没有制作用于创建用户用户凭据验证的应用程序的教程。再说一次,也许他们有,我只是不知道:-)
  • 这个问题真的和iOS无关,而是和一般的应用设计有关
  • 由于我只会在 iOS 中开发,所以我唯一关心的是 iOS。
  • 是的,但问题不是 iOS 特定的。
  • 就我而言是这样。我不想争论。我只是想回答我的问题,而你没有提供答案。你所做的只是指出了一些显而易见的事情,而且这些事情主要是以前做过的人都知道的。感谢您的回复,但它并没有回答我的问题。

标签: authentication architecture credentials application-design


【解决方案1】:

首先,如果 Apple 在没有身份验证的情况下无法执行一些有用的操作,它将拒绝您的应用。 其次,您从用户那里收集输入,然后您必须向您的服务器发送一个 NSURLConnection 以进行身份​​验证、观察响应并采取相应的行动。

【讨论】:

  • 我知道如果苹果不能做有用的事情,它会拒绝它。我了解我收集用户的输入。 “向您的服务器发出 NSURLConnection 以进行身份​​验证、观察响应并采取相应措施。”有什么方法可以让你更详细地解释一下吗?
【解决方案2】:

考虑到您正在使用服务器进行验证,这取决于您的服务器的设置方式。您会以某种方式使用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 编码的数组进行响应。

【讨论】:

  • 感谢您的回复。什么样的服务器?您将如何使用服务器进行验证?我以前从未创建过带有验证的应用程序,所以请原谅我的无知。我是否需要在 Xcode 中激活其他框架才能使用验证?
  • 不,查尔斯你不知道。我的意思是您是否应该运行服务器端程序?你在验证什么?您将用户信息保存在哪里?
猜你喜欢
  • 1970-01-01
  • 2015-02-24
  • 2011-02-05
  • 2020-07-18
  • 1970-01-01
  • 2013-08-04
  • 2015-07-07
  • 2013-02-14
  • 1970-01-01
相关资源
最近更新 更多