iOS UIWebView 通过 cookie 完成自动登录验证
2016-03-31 09:56
495 查看
一些说明:
通过UIWebView登录后,会自动得到web服务器设置的cookie包括服务器中的seesionid。
cookie不会自动保存在app里面,需要通过设置才能在下次启动app时获取。
自动登录,需要设置header,才能将cookie带给web服务器。
自动登录,需要web服务器端进行cookie验证方可登录。
实现流程:
1. 做好Sign in页面后,通过get或post递交表单给web服务器,可以通过下面的代码遍历得到的cookie。
2. 为了实现自动登录,需要将cookie保存下来,以便自动登录,只需要加上一行代码。
3. 自动登录时,需要将上次保存的cookie取出来设置header拿给web服务器,代码如下。
4. web服务器验证app带过来的cookie信息,来完成登录。
如果访问的页面没有cookie验证的代码,那么就访问那些*loginAction之类有验证cookie的页面再跳转,或者告诉同事在你访问的那个页面加个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验证登录的就行了。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 网络头衔CEO、COO、CFO、CTO是什么意思?
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事