iOS - 关于登陆后获取访问服务器通行证 (Token / session)


上班一段时间 遇到过不同的服务器人员 就会有不同访问权限的要求 

有的人要用Token噜 有的人要用session噜 现在庒美丽姐姐告诉你这两种方法的解决方案噜 


1⃣️: Token  

一般当你登陆成功,服务器人员将直接返回给你一个Token串(每次登陆获取的都是不同的值),获取之后,记得用NSUserDefault把这个通行证存起来,这样全局都可以使用,下次登陆,只要更新NSUserDefault里面的value值就可以了。或者你们有什么好方法存取,只要可行都是可以的噜。


模拟一个登陆成功后 服务器返回的参数:

返回:
{
  "status": true,              /* 表示登入成功 */
  "user_id": "1",
  "user_name": "Sue",
  "token": "OZKrPw-3fxHJ8attaHhuvRZJ25B24IUBFPJPx-RN11x.eHmXpLGE6dLfLaicbLVp"   
        /** 这是所有商户API的通行码(Access Token),需要储存下来 **/
}

用您能想到的方法保存下来 可以用NSUserDefault 也可以存档 看你们喜欢!



2⃣️ Session

    AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
    
    mgr.requestSerializer.timeoutInterval = 7;
    
    [mgr POST:loginURL parameters:@{@"phone":phoneNum,@"password":password,@"phone_type":@"1",@"udid":@"cbx1323l4nvbk42x2g3h4v2k34c23c"} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    
        NSLog(@"%@",responseObject);
        
        
        NSHTTPURLResponse * response = (NSHTTPURLResponse *)task.response;
        NSLog(@"%@",response.allHeaderFields);
        
        //获取到请求头文件 里面包含着session的信息
        NSDictionary * resposeDic = response.allHeaderFields;
        
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        //具体字典里面的key命名是什么 还是得按照你们伟大的服务器人员来
        [defaults setObject:resposeDic[@"Session_ID"] forKey:@"Session_ID"];
        [defaults synchronize];
   
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        NSLog(@"登陆超时");
        
        block(@{@"error":@"1"});
        
    }];
    


//下次使用 只要
        NSUserDefaults *defaults1 = [NSUserDefaults standardUserDefaults];
        NSString * session = [defaults1 objectForKey:@"Session_ID"];

//删除
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"Session_ID"];
        [[NSUserDefaults standardUserDefaults] synchronize];


所以 遇到喜欢用Token的服务器人员 真是要贴心地给一个么么哒啦 微笑  

还有 哪里说错了 农村小妹请高手指正 谢谢!微笑



你可能感兴趣的:(ios,APP,访问权限)