当前位置 博文首页 > dengren1956的博客:iOS 开发之基于JWT的Token认证机制及解析
在移动端和服务端通信中,一般有两种认证方式:token 和 session。
1、session/cookie 认证机制:
在服务端创建一个Session对象,同时在客户端的浏览器端创建一个Cookie对象;通过客户端发来的请求中携带的Cookie对象与服务器端的session对象进行匹配,来实现认证
?
2、token 认证机制:
?
token 认证优势:
?
?
token 解析代码:
- (id)jwtDecodeWithJwtString:(NSString *)jwtStr { NSArray * segments = [jwtStr componentsSeparatedByString:@"."]; NSString * base64String = [segments objectAtIndex:1]; int requiredLength = (int)(4 *ceil((float)[base64String length]/4.0)); int nbrPaddings = requiredLength - (int)[base64String length]; if(nbrPaddings > 0) { NSString * pading = [[NSString string] stringByPaddingToLength:nbrPaddings withString:@"=" startingAtIndex:0]; base64String = [base64String stringByAppendingString:pading]; } base64String = [base64String stringByReplacingOccurrencesOfString:@"-" withString:@"+"]; base64String = [base64String stringByReplacingOccurrencesOfString:@"_" withString:@"/"]; NSData * decodeData = [[NSData alloc] initWithBase64EncodedData:[base64String dataUsingEncoding:NSUTF8StringEncoding] options:0]; NSString * decodeString = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding]; NSDictionary * jsonDict = [NSJSONSerialization JSONObjectWithData:[decodeString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; return jsonDict; }cs