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