通过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,又成为了阻碍你写实际项目的阻…
-
网页web防扒技术合集
1.禁用浏览器右键菜单 document.oncontextmenu = new Function(“return false;”); 2.监听键盘事件 function mAle…
-
SpringBoot+Redis轻松实现数据缓存
1.为什么需要缓存 为什么需要缓存,我相信搞开发的都能回答出来,无非就是为了降低数据库压力,节约资源,提升系统性能。而事实上也确实是,归根结底就是降压,高并发,高性能。不过,大厂里…
-
nginx+keepalive搭建高可用nginx平台
整体架构示意图: 整体架构示意图 节点01: R-IP:172.16.106.60 V-IP:172.16.106.10 back:172.16.106.61 节点02: R-IP…
-
Flutter框架分析:EventChannel
1. 前言 本文主要讲解如何使用EventChannel的示例。 2. 使用流程 EventChannel一般用于事件流的传递,用于将Platform的点击等一系列事件等传递至Pl…
-
支付宝支付前后端实现Vue+Spring Boot
本文主要总结基于Vue/Spring Boot的支付宝支付实现,兼容H5与电脑端。 1. 应用创建与配置 第一步:登录支付宝开放平台创建应用; 并视情况需要添加“手机网站支付”和“…
-
Netlify中的WebAssembly Serverless函数
Netlify 是一个开发和托管 Jamstack 应用的平台。实际上,Jamstack 是Netlify 的创始人 Mathias Biilmann 于 2015年造出来的一个词…
-
Nodejs中的Console把输出重定向到日志文件中
console这个东西, 在浏览器里相信程序猿和程序媛都用过不少 在Nodejs也到处可见其身影 Nodejs中的console 模块提供了一个简单的调试控制台,类似于 Web 浏…
-
Rewrite语句将网站二级目录自动跳转到二级域名对应页面 实现301重定向
IIS ISAPI_Rewrite版本不同语法有点差异。你自己选择吧2.X版RewriteCond Host: ^www\.yixao\.com$ RewriteRule ^/bbs(.*)$ http\://bbs\.yixao\.com$1 [I,RP,L] I表示 忽略大小写 RP表示301,L 表示最后面规则不可以覆盖此规则
-
Node.js构建GraphQL API指南
在过去的几年中,GraphQL已经成为一种非常流行的API规范,该规范专注于使客户端(无论客户端是前端还是第三方)的数据获取更加容易。 在传统的基于REST的API方法中,客户端发…