Files
2016-11-11 19:31:05 +08:00

49 lines
2.0 KiB
Markdown

##UIWebView中使用cookie实现免登陆
*最近帮忙朋友上架一个纯h5的app,就是用原生做了一层壳。
可是发现,每次重新开启app的时候之前登录的信息就不存在了,所以就想到了要需要用刀UIWebView的cookie来获取用户数据实现免登陆。*
###下面贴代码
* 首先获取cookie并且保存其中`cookie.name`用来判断是否是你需要保存的cookie
`- (void)webViewDidFinishLoad:(UIWebView *)webView`
```objectivec
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
```objectivec
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];
}
```