通过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
相关推荐
-
前端实用代码屑,为你的工作增加一些效率
得空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。 1、使用解构获取json数据 2、使用扩展字符串合并数组 3、使用Set实现数组去重 4、使用apply改变this指…
-
基于Vue的项目打包为移动端app
现在基于vue全家桶技术体系,基本上可以开发各端的各种应用,pc端的应用,开发完成以后,直接运行打包命令 yarn build 即可打包,部署到服务器端上线即可。那么,今天我们来聊…
-
Vue里面template的几种写法
第一种写法:字符串模版写法 直接写在template属性里面,这种写法比较直观,适用于html代码不多的场景,但如果html代码很多,就不方便维护了,所以如果代码多就不建议这么写:…
-
Springboot+Python之RSA加解密方案
1、RSA java实现加解密 import java.io.ByteArrayOutputStream; import java.security.Key; import jav…
-
那些PHP开发者可能用得上的工具
那些 PHP 开发者可能用得上的工具,今天学技巧就给大家整理整理,希望对于php初学者来说还是老手,还是正在学习提升中的朋友们都有所帮助。都说php是最好的开发语言,我信,你们信吗…
-
springboot:一个ASpect实现防止表单重复提交+限制IP访问频率
@Target({ ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @int…
-
Nodejs中的Console把输出重定向到日志文件中
console这个东西, 在浏览器里相信程序猿和程序媛都用过不少 在Nodejs也到处可见其身影 Nodejs中的console 模块提供了一个简单的调试控制台,类似于 Web 浏…
-
常用的JS代码片段,每段代码花30秒就能看懂
JavaScript 是目前最流行的编程语言之一,正如大多数人所说:“如果你想学一门编程语言,请学JavaScript。” FreeCodeCamp的创始人 Quincy Lars…
-
webpack使用大全
提示: 文中代码片段可能会在本文上传后格式被压缩,感兴趣的童鞋请复制代码到ide中格式化后查看,敬请谅解! webpack wenpack简介 webpack是一个JavaScri…
-
Python读取配置文件模块ConfigParser
一、ConfigParser模块简介 假设有如下配置文件,需要在Pyhton程序中读取 $ cat config.ini [db] db_port = 3306 db_user =…