ios - 使用 xcode 在 ios 应用程序上测试登录

标签 ios objective-c authentication

我想在用户完成所有字段后测试连接设置是否正确。我已经连接,但我想要一个条件,如果用户名或密码不正确。

我的MainViewController.m

 NSString* host = @"http://www.example.com";
        NSString* complement = @"/account/login";



        NSString* user_name = [[NSUserDefaults standardUserDefaults] valueForKey:@"Identifiant"];
        NSString* password = [[NSUserDefaults standardUserDefaults] valueForKey:@"Password"];
        //Add URL + Folder
        NSString *urlString = [NSString stringWithFormat:@"%@%@", host, complement];


        //NSURL *url = [NSURL URLWithString:urlString];
        NSURL *url = [NSURL URLWithString:urlString];


        //NSURLRequest *request = [NSURLRequest requestWithURL:url];

        //Add some informations POST
        NSString *post = [NSString stringWithFormat:@"user_name=%@&password=%@&submit=submit", user_name, password];;


        NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

        NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:postData];


        NSOperationQueue *queue = [[NSOperationQueue alloc] init];



        [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
         {
             if ([data length] > 0 && error == nil) [_loadscreen loadRequest:request];
             else if (error != nil) NSLog(@"Error: %@", error);
         }];

如果密码或Id不正确,我想显示一个错误,实际上,当它不正确时,它在webview上显示登录页面,但我不想显示登录网页。

最佳答案

为什么要这样做,为什么要使用“POST”方法而不是将内容发布到服务器页面。你只需要实现 Json Parsing 就可以了,试试这个:

你只需要在你的 php 代码结束时做一些更正。告诉他们当 userId 和密码不匹配时返回 success =“0”,如果匹配则返回“1”。 :

NSHTTPURLResponse *response = nil;
NSString *jsonUrlString = [NSString stringWithFormat:@"http://www.example.com/pagename.php?username=%@&password=%@",emailText.Text,passwordText.Text];

NSURL *url = [NSURL URLWithString:[jsonUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSMutableArray *result = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];

NSLog(@"%@",result);

NSString *stringData = [result valueForKey:@"success"];
if ([stringData isEqualToString:@"0"]) {
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"wrong credentials" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
} else {
 //perform anything you want to perform
}

关于ios - 使用 xcode 在 ios 应用程序上测试登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977353/

相关文章:

ios - SceneKit 3D 标记增强现实 iOS

ios - 如何在 UITableView 中找到完全可见(完全可见)单元格的索引

php - jQuery、PHP、MySQL 登录保留页面查询

android - 如何让用户在 Firebase 中退出?

wcf - IIS 7中的Kerberos身份验证

ios - 无法使用 Swift 通过导航 Controller 返回到另一个导航 Controller 的 VC

ios - WebStorm如何支持react-native的字符串类型?

iphone - tableView 单元格仅在模拟器中填充

ios - iTunes 拒绝应用程序的出生日期

ios - 在 Objective C 的 FooterTableViewCell 中放置 View 的问题