通过UIWebView登录后,会自动得到web服务器设置的cookie包括服务器中的seesionid。cookie不会自动保存在app里面,需要通过设置才能在下次启动app时获取。自动登录,需要设置header,才能将cookie带给web服务器。自动登录,需要web服务器端进行cookie验证方可登录。
一些说明:
- 通过UIWebView登录后,会自动得到web服务器设置的cookie包括服务器中的seesionid。
- cookie不会自动保存在app里面,需要通过设置才能在下次启动app时获取。
- 自动登录,需要设置header,才能将cookie带给web服务器。
- 自动登录,需要web服务器端进行cookie验证方可登录。

实现流程:
1. 做好Sign in页面后,通过get或post递交表单给web服务器,可以通过下面的代码遍历得到的cookie
- NSHTTPCookieStorage *myCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
- for (NSHTTPCookie *cookie in [myCookie cookies]) {
- NSLog(@”%@”, cookie);
- }
2. 为了实现自动登录,需要将cookie保存下来,以便自动登录,只需要加上一行代码。
- NSHTTPCookieStorage *myCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
- for (NSHTTPCookie *cookie in [myCookie cookies]) {
- NSLog(@”%@”, cookie);
- [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; // 保存
- }
3. 自动登录时,需要将上次保存的cookie取出来设置header拿给web服务器,代码如下。
- // 寻找URL为HOST的相关cookie,不用担心,步骤2已经自动为cookie设置好了相关的URL信息
- NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:HOST]]; // 这里的HOST是你web服务器的域名地址
- // 比如你之前登录的网站地址是abc.com(当然前面要加http://,如果你服务器需要端口号也可以加上端口号),那么这里的HOST就是http://abc.com
- // 设置header,通过遍历cookies来一个一个的设置header
- for (NSHTTPCookie *cookie in cookies){
- // cookiesWithResponseHeaderFields方法,需要为URL设置一个cookie为NSDictionary类型的header,注意NSDictionary里面的forKey需要是@”Set-Cookie”
- NSArray *headeringCookie = [NSHTTPCookie cookiesWithResponseHeaderFields:
- [NSDictionary dictionaryWithObject:
- [[NSString alloc] initWithFormat:@”%@=%@”,[cookie name],[cookie value]]
- forKey:@”Set-Cookie”]
- forURL:[NSURL URLWithString:HOST]];
- // 通过setCookies方法,完成设置,这样只要一访问URL为HOST的网页时,会自动附带上设置好的header
- [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:headeringCookie
- forURL:[NSURL URLWithString:HOST]
- mainDocumentURL:nil];
- }
4. web服务器验证app带过来的cookie信息,来完成登录。
如果访问的页面没有cookie验证的代码,那么就访问那些*loginAction之类有验证cookie的页面再跳转,或者告诉同事在你访问的那个页面加个cookie验证登录的就行了。
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/procedure/314.html


相关推荐
-
用python把linux命令写一遍的人处于编程的什么水平?
如何提升自己的 python 能力呢?直接找项目写,但是作为零基础 / 小白 / 入门 的你来说做一个博客还要学 web 框架、html、css、js,又成为了阻碍你写实际项目的阻…
-
用Pytest+Allure生成漂亮的HTML图形化测试报告
对于软件测试来说,测试报告是非常重要的工作产出。一个漂亮、清晰、格式规范的测试报告,能够减少开发人员和测试人员的沟通成本。 本篇文章将介绍如何使用开源的测试报告生成框架 Allur…
-
微前端框架qiankun体验
同事跳槽了,新公司使用微前端模式,说看起来让人头大,让我看看。好嘛,我先看看,然后拿老项目来改吧改吧,项目框架为VUE。 介绍 qiankun 是一个基于 single-spa的微…
-
在Vue3中使用echarts
在项目中经常需要使用一些折线图、柱状图、饼状图等等,统计相关的组件当然是echarts无疑了 安装 npm install echarts -S 应用 在入口文件App.vue中定…
-
Web设计师开发项目一定不要一棵树上吊死
时间过的飞快,转眼间,7月份就过完了。这段时间,因为某些原因,项目delay了。所以这个很多时间都是在学习技术。当然主要还是前端这一块。然后前段时间,公司来了4个实习生,我负责带其中的2个。以自己的角度去分析Web开发,然后再次和大家聊聊兴趣和工作的问题。
-
vue.js+ztree 树形组件Vue-GiantTree
今天给大家分享一款超棒的Vue海量数据渲染树形组件VueGiantTree。 vue-giant-tree 基于 ztree 封装的Vue树形组件。轻松实现大数据高性能渲染,适合海…
-
PHP Curl的简单使用方法
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。 CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我…
-
基于java Springboot实现课程评分系统设计和实现
前言: 教师教学评价是教学质量评价的重要内容,随着教育信息化进程的加快,如何在传统教学中运用网络技术来评价教师教学质量,如何在网络教学环境中评价教师教学质量, 是教学管理的难点,也…
-
那些PHP开发者可能用得上的工具
那些 PHP 开发者可能用得上的工具,今天学技巧就给大家整理整理,希望对于php初学者来说还是老手,还是正在学习提升中的朋友们都有所帮助。都说php是最好的开发语言,我信,你们信吗…