iOS UIWebView 通过 cookie 完成自动登录验证

一些说明:

  1. 通过UIWebView登录后,会自动得到web服务器设置的cookie包括服务器中的seesionid。
  2. cookie不会自动保存在app里面,需要通过设置才能在下次启动app时获取。
  3. 自动登录,需要设置header,才能将cookie带给web服务器。
  4. 自动登录,需要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验证登录的就行了。


BB:转载请注明出处:http://blog.csdn.net/assholeu/article/details/38585243


  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值