您的位置:首页 > 移动开发 > IOS开发

iOS中关于登录验证方面的问题的解决

2015-08-13 14:36 585 查看
谢各位大神的帮助  同样也期待同行的指点 ,本文仅供自己参考请勿用于商业目的,转载请注明作者和地址,谢谢!

因为我自己也是小白 也在学习 ,所以自己弄完一个demo之后赶紧想办法写下来 ,留给自己以后参考!

也给需要的人一点参考意见 。

在这里特别感谢大神 ruzhuxiaogu 的帮助!

我用的是xcode6.4  版本应该是目前最新的 所以网上很多的解答都不太适合我。

做登录验证的话 首先要建立一个项目  我这里建立的是   “  百汇百通 ”

选择single view,点击next

好了 这时候一个简单的项目已经创建好了,目录界面如下:

当然这时候可能会有小白说怎么我的目录和你的不一样 ,我说明一下 ,我这个目录里面的两个组 (BaiHui  和 images )是自己测试的时候添加的,懒得删除了,另外一个 “ios test ”这个文件夹也是测试添加  所以你们创建了的话没有这三个文件夹和包是正常的。 

下一步我选择在storyboard中操作。

点击main.storyboard  就会有如下界面:

 

下面我门在窗口中布局 ,我做出来的demo 布局界面如下:

  看我的界面可以看出  除了几个美化用的 imageview  真正有用的只有三个,两个文本框 ,一个登录按钮。  

那么现在我门要把这个界面和代码联系起来 ,具体的方法是:

点击xcode功能框的一处 ,如图:

就那两个圈圈的那个按钮  点了之后会弹出viewcontroller.h  

按住contro+鼠标左键 点击文本框

 就会弹出小界面:

这里只要在name里输入文本框的名字就行了  我输入的是 username;

同样的方法把第二个文本框也连接到代码里,name  填的是 pwd  ;

现在我们来连接这个登录按钮;同样的contro+鼠标左键 到viewcontroller.h  , 但是要注意 ,这次弹出来的小框我们要选择 action

name的话我填的是 signin ;

这样的话 连接就完成了  ,你在viewcontroller.m文件里的最下面就可以看到这样子一行代码:

  

- (IBAction)signin:(id)sender {


这就是那个按钮的方法了。 

需要实现的功能可以把方法写道这个按钮里面 

现在我就写入我的登录验证需要的方法。代码如下:

- (IBAction)signin:(id)sender {

   

    
   
NSString*username=self.username.text;
   
NSString*pwd=self.pwd.text;

    

    NSString *str =[NSString
stringWithFormat:@"ActionCode=0x2001¶meter=pwd###%@#####userNo###%@&LoginID=&LoginIp=",pwd,username];//设置参数

   

    

    

    NSString *encodedValue = [str
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

   

    

    

    

    NSString*str2=[NSString
stringWithFormat:@"http://14.17.84.128:8088/wcf/ActionService.svc/action/web/get/do?%@",encodedValue];

   
if ([username length]<1&[pwd
length]<1) {

        

        UIAlertView *alter = [[UIAler
4000
tView
alloc] initWithTitle:@"网页提示"
message:@"请输入账号和密码"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];

        
        [alter
show];

        

        
    }

    

    
   
else

    

    

    
   
if ([username length]<1) {

        

        UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"请输入账号"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];

        
        [alter
show];
    }
   
else

    
   
if ([pwd length]<1) {

        UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"请输入密码"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];

        
        [alter
show];
    }

    
   
else

        

        

        

    

    
    {

   

    

    
   
NSURL*url=[NSURL
URLWithString:str2];

    

    NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10];

    

    //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)

   

    

    //第三步,连接服务器

    

    NSData *received = [NSURLConnection
sendSynchronousRequest:request returningResponse:nil
error:nil];

    

    

    

    NSString *str3 = [[NSString
alloc]initWithData:received
encoding:NSUTF8StringEncoding];

    

   // NSLog(@"%@",str2);

    

    

    
    
NSLog(@"%@",str3);

   NSDictionary *dict=[NSJSONSerialization
JSONObjectWithData:received options:NSJSONReadingMutableLeaves
error:nil];
  
NSString*result=dict[@"Result"];

  

    

   // NSLog(@"%@",result);

   

    NSData *jsonData=[result
dataUsingEncoding:NSUTF8StringEncoding];
   
NSError*err;

    NSDictionary*res=[NSJSONSerialization
JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers
error:&err];

     
   
if (err) {
       
NSLog(@"json解析失败");

        

        
    }
    
NSString*CompanyCode=res[@"CompanyCode"];
   
NSString*CompanyID=res[@"CompanyID"];
   
NSLog(@"CompanyCode:%@",CompanyCode);
   
NSLog(@"CompanyID:%@",CompanyID);

   

    

    

    

    //验证完成后加载webview

    
   
if ([CompanyCode length]>1) {
       
NSLog(@"登录成功");

        

       //测试正在登录  
宋康

        //UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"网页提示" message:@"正在登录" delegate:nil cancelButtonTitle:@"确定"
otherButtonTitles:nil];

       

       // [alter show];

        

      

    

        NSString*str4=[NSString
stringWithFormat:@"http://app.gps580.com/?info=%@",str3];

         //NSLog(@"%@",str4);

        NSString *encodedValue1 = [str4
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        

        

       

        
       
UIWebView *webView = [[UIWebView
alloc] initWithFrame:[UIScreen
mainScreen].bounds];

        //NSString *str5=[NSString stringWithFormat:str4];

        // NSString *encodedValue1 = [str5 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [webView
loadRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:encodedValue1]]];

        UIViewController *viewCro = [[UIViewController
alloc]
init];

        

        

        
       
//......

        //file:///Users/ken/Desktop/ios%20test/index.html

        //.......file:///Users/ken/Downloads/BaiHui/main.html#&login

        

        

        
        [viewCro.view
addSubview:webView];

        [self
presentViewController:viewCro animated:YES
completion:nil];

        

        

        

        

        
           }

        

        //登录失败时弹出提示框
   
else
    {

        
       
NSLog(@"登录失败");

    

    UIAlertView *alter = [[UIAlertView
alloc] initWithTitle:@"网页提示"
message:@"账号或密码错误"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];

    
    [alter
show];

   
    }

        

        

        

        

        
}
}

这个时候 一个登录验证的app就做好了 ,可以成功的在模拟器上跑起来了, 我这里提供的代码里的登录的api是公司的 ,所以不方便透露账号和密码,你们可以自己修改登录的地址和参数。 

成功后的界面:

输入账号密码登录进去 之后就是打开一个网页浏览器啦 :

 谢谢各位大神的帮助  同样也期待同行的指点 ,本文仅供自己参考请勿用于商业目的,转载请注明作者和地址,谢谢。  

稍后我会提供下载地址(可能会要积分)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS xcode 登录验证