Files
wu736139669.github.io/iOS/UIWebViewCookie.md
T
2016-11-11 19:31:05 +08:00

2.0 KiB

##UIWebView中使用cookie实现免登陆

最近帮忙朋友上架一个纯h5的app,就是用原生做了一层壳。 可是发现,每次重新开启app的时候之前登录的信息就不存在了,所以就想到了要需要用刀UIWebView的cookie来获取用户数据实现免登陆。

###下面贴代码

  • 首先获取cookie并且保存其中cookie.name用来判断是否是你需要保存的cookie

- (void)webViewDidFinishLoad:(UIWebView *)webView

NSArray*nCookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage]cookies];
    NSHTTPCookie*cookie;
    for(id cookies in nCookies)
    {
        if([cookies isKindOfClass:[NSHTTPCookie class]])
        {
            cookie=(NSHTTPCookie*)cookies;
            if([cookie.name isEqualToString:@"touch_id"]) {
                NSNumber*sessionOnly = [NSNumber numberWithBool:cookie.sessionOnly];
                NSNumber*isSecure = [NSNumber numberWithBool:cookie.isSecure];
                NSArray*cookies = [NSArray arrayWithObjects:cookie.name, cookie.value, sessionOnly, cookie.domain, cookie.path, isSecure,nil];
                [[NSUserDefaults standardUserDefaults]setObject:cookies forKey:@"cookies"];
                
                break;
            }
        }
    }
  • 在调用 UIWebView loadRequest 之前先设置好cookie
    NSArray*cookies =[[NSUserDefaults standardUserDefaults] objectForKey:@"cookies"];
    if(cookies){
        NSMutableDictionary*cookieProperties = [NSMutableDictionary dictionary];
        [cookieProperties setObject:[cookies objectAtIndex:0]forKey:NSHTTPCookieName];
        [cookieProperties setObject:[cookies objectAtIndex:1]forKey:NSHTTPCookieValue];
        [cookieProperties setObject:[cookies objectAtIndex:3]forKey:NSHTTPCookieDomain];
        [cookieProperties setObject:[cookies objectAtIndex:4]forKey:NSHTTPCookiePath];
        NSHTTPCookie*cookieuser = [NSHTTPCookie cookieWithProperties:cookieProperties];
        [[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookie:cookieuser];
    }