登陆功能的代码实现
2016-03-30 14:56
302 查看
登陆功能的代码实现
进入App时简单的登录注册界面:
当app界面加载时,如果网络正常,需要向服务器发送请求(ViewDidLoad时就要向服务器发请求),服务器返回相应的参数,这些参数在之后的登陆请求中会用到,相关代码如下:
//请求参数 AFHTTPSessionManager * man = [AFHTTPSessionManager manager]; //发送GET请求 [man GET:CANSHU_URL parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"请求成功 %@ %@",responseObject,responseObject[@"result"]); dic = responseObject[@"result"]; //base解密 _pwd = [AESCrypt decrypt:dic[@"keycode"]]; NSLog(@"%@",_pwd); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"请求失败 %@",error); }];
请求成功后,服务器会返回json数据,如下所示:
注:keycode是一个重要参数,被称为临时密钥,用来加密其他重要参数,如用户名和密码,此时返回的“keycode”是加密状态,需要base64解密后才能用作加密其他参数。
然后点击登陆按钮(假设已经有注册好的用户名和密码),向服务器发送登陆请求,代码如下:
//加密用户名和密码 NSString * encryptionStr1 = [AESCrypt encrypt:_numberTextField.text password:_pwd]; NSString * encryptionStr2 = [AESCrypt encrypt:_passTextField.text password:_pwd]; NSDictionary * pDic = [NSDictionary dictionaryWithObjectsAndKeys:dic[@"keycode"],@"keycode", encryptionStr1,@"telno",encryptionStr2,@"password", nil]; AFHTTPRequestOperationManager * man = [AFHTTPRequestOperationManager manager]; man.responseSerializer = [AFHTTPResponseSerializer serializer]; //发送POST请求 [man POST:DENGLU_URL parameters:pDic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { } success:^(AFHTTPRequestOperation *operation, id responseObject) { //JSON解析 NSDictionary * allInDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSLog(@"\nSource : %@\nresponse:%@",allDic[@"result"],allDic[@"response"]); if ([allInDic[@"status"] intValue] == 1) { NSDictionary * dict = allInDic[@"result"]; AppDelegate * app = [AppDelegate sharedAppDelegate]; app.keycode = allInDic[@"response"]; [[NSUserDefaults standardUserDefaults] setObject:dict[@"uid"] forKey:@"uid"]; [[NSUserDefaults standardUserDefaults] synchronize]; //base64解密 NSString * pass = [AESCrypt decrypt:dic[@"keycode"]]; [[NSUserDefaults standardUserDefaults] setObject:pass forKey:@"keycode"]; [[NSUserDefaults standardUserDefaults] synchronize]; //添加蒙板和菊花 [self createCoverBtn]; [self createActivityIndicatorView]; self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES]; }else{ UIAlertView* alter=[[UIAlertView alloc]initWithTitle:@"很抱歉" message:@"亲,你输入的账号或者密码有误" delegate:nil cancelButtonTitle:@"我看一下" otherButtonTitles:@"重新输入", nil]; [alter show]; } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }];
运行模拟器,点击登陆按钮,服务器会返回相应的json数据,如下:
以上是登陆成功才会返回的数据
相关文章推荐
- c#主窗体向子窗体上的报表传参数
- C#高性能大容量SOCKET并发(一):IOCP完成端口例子介绍(转)
- JAVA 页面隐藏手机号或者身份证号
- 【ASP.NET Core】mdl conflicts with tinymce
- ubuntu配置JDK
- python远程调试Django程序
- apt-get依赖库版本过高问题的解决(如何处理libqt4-dev在ubuntu的安装问题)
- JavaWeb那些事儿(一)--为什么做java的web开发使用struts2,springMVC和spring这样的框架
- [Java]循环步长不要设置成小数
- 关于c语言中二维数组的思考
- Gmap.net百度地图开发
- Java调优之jvm和线程的内存分析
- Struts2基础学习总结
- 如何快速反编译JAVA的jar包或war包
- vsftpd.conf详细配置。
- 辛星整理python语言的两个独特之处
- javaweb学习总结(十六)——JSP指令
- myeclipse卡死强在 loading workbench解决
- Java 垃圾回收
- struts2的核心和工作原理