登陸功能的代碼實現

登陸功能的代碼實現

進入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數據,如下:

這裏寫圖片描述

以上是登陸成功纔會返回的數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章