美文网首页iOS优秀开发文章
iOS 解决未登录cookie失效问题

iOS 解决未登录cookie失效问题

作者: 红凉梦 | 来源:发表于2019-11-16 10:23 被阅读0次

登陆之后cookie存在,退出登陆之后,杀掉app,cookie失效,解决方法,存储本地,退出登陆之后,清除cookie 和本地存储的cookie

-(NSString*)getCookies{

//cookie,本地存储,iOS中,退出cookie自动清除

NSArray *arcCookies = [NSKeyedUnarchiver unarchiveObjectWithData: [[NSUserDefaults standardUserDefaults] objectForKey: @"kUserDefaultsCookie"]];

if(arcCookies.count!=0) {

    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];

    for(NSHTTPCookie*cookieinarcCookies){

        [cookieStoragesetCookie: cookie];

    }

}

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];

NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject:cookies];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaultssetObject: cookiesDataforKey:@"kUserDefaultsCookie"];

[defaultssynchronize];

NSMutableDictionary *cookieDic=[[NSMutableDictionary alloc]initWithCapacity:0];

for(NSHTTPCookie *cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies){

    if ([AMTAPP.Server rangeOfString:cookie.domain].location == NSNotFound) {

        //            [cookieDic setValue:cookie.value forKey:cookie.name];

    }else{

        [cookieDicsetValue:cookie.valueforKey:cookie.name];

    }

}

NSMutableString *cookieStr=[[NSMutableString alloc]initWithCapacity:0];

//之所以又从cookieDic里取一次,是因为cookieDic可以去除相同name的value,因为作用域或者其他原因,同一个name的cookie可以被当成是两个cookie

for(NSString*keyincookieDic){

    [cookieStrappendFormat:@"%@=%@;",key,cookieDic[key]];

}

[cookieStrreplaceOccurrencesOfString:@";" withString:@"" options:0 range:NSMakeRange(cookieStr.length-1, 1)];

returncookieStr;

}

相关文章

网友评论

    本文标题:iOS 解决未登录cookie失效问题

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