您的位置:首页 > 编程语言

登陆功能的代码实现

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数据,如下:



以上是登陆成功才会返回的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: