美文网首页
oc 解析jwt

oc 解析jwt

作者: dongshangtong | 来源:发表于2019-05-27 00:05 被阅读0次

oc 解析jwt 和过期时间计算

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *jwt_str = @"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6ImtlZXBfaXQiLCJleHAiOjE1NTk0ODcyODIsImVtYWlsIjoiZG9uZ3NoYW5ndG9uZ0AxNjMuY29tIn0.BuP6QJlnY-UWtpzh4H2_ippVoLCNWGgon8jp1dBVWPE";
    
    NSLog(@"%@", [self jwtDecodeWithJwtString:jwt_str]);
    

}


-(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 options:0];
    NSString * decodeString = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding];
    NSDictionary * jsonDict = [NSJSONSerialization JSONObjectWithData:[decodeString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
    return jsonDict;
}


-(NSString *)token {
    
    
    NSString *token = [[NSUserDefaults standardUserDefaults] objectForKey:@"kLoginToken"];
    NSLog(@"server token %@",token);
    if (token) {
        NSDictionary *dict = [self jwtDecodeWithJwtString:token];
        NSLog(@"server token dict %@",dict);
        if ([dict objectForKey:@"exp"]) {
            NSNumber *exp = [dict objectForKey:@"exp"];//时间戳
            NSTimeInterval time = exp.floatValue + 28800;//因为时差问题要加8小时 == 28800 sec
            NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:time];
            NSLog(@"server token date:%@",[detaildate description]);
            //日历
            NSCalendar *calendar = [NSCalendar currentCalendar];
            NSDate *currentDate = [NSDate date];
            //计算两个日期的差值
            NSDateComponents*cmps= [calendar components:NSCalendarUnitDay fromDate:currentDate toDate:detaildate options:NSCalendarMatchStrictly];
            NSLog(@"server token 时间差值--->%@",cmps);
            if (cmps.day <= 1) {
                //如果token过期,则清除token
               // [self clearToken];
                return nil;
            }
        }
    }
    return token;
}

相关文章

  • oc 解析jwt

    oc 解析jwt 和过期时间计算

  • Gin jwt

    在线解析Token:https://jwt.io/[https://jwt.io/] JWT(JSON Web T...

  • iOS JWT解析

    JWT 的详细使用: 解析JWT extension String { funcjwtDecode()->[S...

  • JWT的介绍解析

    JWT的介绍解析 一、什么是JWT?了解JWT,认知JWT 首先jwt其实是三个英语单词JSON Web Toke...

  • SpringSecurity OAuth2 自定义令牌配置(JW

    目录: 自定义令牌配置 使用JWT替换默认令牌 扩展JWT JAVA中解析JWT 刷新令牌 Spring Secu...

  • json与oc数据互转

    1、json -> OC情景:服务器返回带斜杠数据,自己解析。eg: 解析步骤: 2、OC -> json

  • 多线程网络05

    1 JSON解析代码 1.1 JSON -> OC 1.2 OC -> JSON 2 MJExtension 2....

  • IOS JWT 解析。

    在移动端和服务端通信中,一般有两种认证方式:token 和 session。 1、session/cookie 认...

  • jwt-simple 包使用详解

    一、简介 JWT(JSON Web Token) 编码解码模块 二、使用 安装 生成token & 解析token...

  • OC-数据解析XML(sax)(一)

    OC-数据解析XML(sax)(一) 为什么进行解析 用于公司内部数据交互,加密 解析的方法: (1)XML解析 ...

网友评论

      本文标题:oc 解析jwt

      本文链接:https://www.haomeiwen.com/subject/fdvqtctx.html