通过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
相关推荐
-
Shell脚本进阶的经典用法
Shell 脚本进阶的经典用法 一、条件选择、判断 1、条件选择if (1)用法格式 if 判断条件 1 ; then 条件为真的分支代码 elif 判断条件 2 ; then 条…
-
springboot:一个ASpect实现防止表单重复提交+限制IP访问频率
@Target({ ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @int…
-
python读取服务器日志的方法
import paramiko #读取服务器日志,并打印 def get_server_log(): hostname = “172.16.176.xx” …
-
微前端框架qiankun体验
同事跳槽了,新公司使用微前端模式,说看起来让人头大,让我看看。好嘛,我先看看,然后拿老项目来改吧改吧,项目框架为VUE。 介绍 qiankun 是一个基于 single-spa的微…
-
网站简单的防止CC攻击(5秒盾)PHP通用
利用检测 cookie 是否为正常的值,来判断是否为正常用户访问..PHP写的所以如果攻击的人代理很多的话,效果还是不大的!所以!做人要低调! 建立个cc.php代码: <?…
-
.NET Core+K8S+Apollo玩转配置中心
1.引言 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,…
-
Springboot整合百度开源分布式ID生成器UIDGenerator
UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器。UidGenerator以组件形式工作在应用项目中, 支持自定义workerId位数和初始化策略, 从而适用于docker等虚拟化环境下实例自动重启、漂移等场景。
-
在web开发中,为什么前端比后端更得到转行程序员的青睐
Web开发分类与区别 在软件开发行业中,通常会将web开发分成Web前端开发和Web后端开发。参照这两个分类,因此就有了Web前端开发工程师Web后端开发工程师。通常面试过程中,说…
-
Vue+element-ui 可视化表单设计生成器
今天给大家推荐一款超逼格的Vue可拖拽表单设计器组件FormGenerator。 form-generator 基于 Vue.js ElementUI 高效表单设计组件,star高…
-
在MAC下的VS Code配置Python的运行环境
有时候需要写一些小代码运行的话,打开Pycharm有点麻烦,但是命令行运行有有点不方便,那么现在我们就来看看在MAC下的VS Code 的Python的调试环境的配置把 &nbs…