ios js h5 交互 cookie设置 自动登录

保证可行!两步实现iOS UIWebView 通过 cookie 完成自动登录。

字数486 阅读967 评论3

这两天有个项目需求,在网上找了好多博文都不可以拿来就能实现(对于伸手党怎么能行),为了避免浪费大家的时间我在这里给出一份一定可行的方法:

1、相关知识点介绍

  1. iOS在UIWebView中获取的cookie的方法:NSHTTPCookieStorage * nCookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]
  2. 再具体获取某个域的饼干:NSArray* cookiesURL = [nCookies cookiesForURL:[NSURL URLWithString:@“你的URL”]];
  3. 通过[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie]方法将 cookies来保存起来,但是这样虽然可以保存cookies但是你应用退出之后还是会丢失(其实是cookies过期的问题),做好的方法是把cookies放到NSUserDefaults保存起来:

    2、实现方法

    • 简单粗暴直接上码:demo
      1.在UIWebView的代理方法中实现获取cookies并将cookies放到NSUserDefaults保存起来:(void)webViewDidFinishLoad:(UIWebView *)webView中写入

      NSArray *nCookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
      NSHTTPCookie *cookie;
      for (id c in nCookies)
      {
         if ([c isKindOfClass:[NSHTTPCookie class]])
         {
             cookie=(NSHTTPCookie *)c;
             if ([cookie.name isEqualToString:@"PHPSESSID"]) {
                 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;
             }
         }
      }

      2.获取cookies:运行之后,UIWebview加载url之前获取保存好的cookies,并设置cookies

      NSArray *cookies =[[NSUserDefaults standardUserDefaults]  objectForKey:@"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];

      注意:要在[self.webView loadRequest:req];之前设置获取cookies!
      到现在为止你的应用肯定就已经实现了你想要的功能!
      吃水不忘挖井人:(其中连接上面实现的稍微有些问题,我在我这里已经进行了修改)功能实现参考链接

                                                                              ----By ZPengs
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值