IOS-54-IOS开发中cookie的作用简介

来源:互联网 发布:ps ef grep java 编辑:程序博客网 时间:2024/06/05 11:23

一般在网页中用到cookie、session等机制。其实涉及到浏览器的一般都需要。

当然我将cookie用在iOS上了,作用是识别用户,实现自动登录机制,应用场景是这样的:
正常流程:登录成功—>服务器返回一个cookie—>存储到本地—>获取充电站信息—>关闭应用程序(不是退出账号)—>再次打开应用—>自动登录方法—>获取充电站信息

1.SESSION与COOKIE区别:
  Session 将信息保存在服务器上.服务器在接受到唯一的SESSION_ID后,根据这个ID获取相关数据,然后将信息传递到客户端(浏览器).
  Cookie 是将所有信息以文本的形式存在本地文件,并由客户端(浏览器)进行管理与维护.
因为Session 数据存储在server端,所以远程client无法对数据进行修改;而Cookie存储在client本地,容易被获取和篡改.所以Session安全性较高.

2.cookie: 是一种远程客户端存储数据和跟踪识别用户的机制.是服务器临时存放数据在本地用户的一个文本文件.文本文件格式:”用户名@网站地址[数字].txt”

3.当前我开发的APP中,主要是用于域名、用户跟踪

iOS中存储cookie信息:

/** *  手动添加3份cookies(登录后,服务端会传一份cookie,由于目前有4个domain需要用到该cookie,因此需要手动创建3份对应domain的cookie) *  登录的domain为api.·····.com */+ (void)addTELDSIdCookies {    //http://····.······.cn/····    NSArray *domainArr = @[kCMSApiDomain,kSMSApiDomain,kWxDomin];    NSHTTPCookie *TELDSIDCookie = [self TELDSIDCookie];    if (TELDSIDCookie) {        for (int i = 0; i < [domainArr count]; i++) {            NSMutableDictionary *propertiesDic = [NSMutableDictionary dictionary];            [propertiesDic setObject:domainArr[i] forKey:NSHTTPCookieDomain];            [propertiesDic setObject:TELDSIDCookie.name forKey:NSHTTPCookieName];            [propertiesDic setObject:TELDSIDCookie.value forKey:NSHTTPCookieValue];            [propertiesDic setObject:TELDSIDCookie.path forKey:NSHTTPCookiePath];            [propertiesDic setObject:@"0" forKey:NSHTTPCookieVersion];            NSHTTPCookie *newCookie = [NSHTTPCookie cookieWithProperties:propertiesDic];            [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:newCookie];        }    }}/** *  清除所有TELDSIdCookies */+ (void)deleteAllTELDSIdCookies {    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];    NSArray *cookiesArr = [cookieStorage cookies];    [cookiesArr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {        NSHTTPCookie *cookie = obj;        if ([cookie.name isEqualToString:kBaseCookieName]) {            [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];        }    }];}// 取TELDSID cookie+ (NSHTTPCookie *)TELDSIDCookie {    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];    NSArray *cookiesArr = [cookieStorage cookies];    for (NSHTTPCookie *cookie in cookiesArr) {        if ([cookie.name isEqualToString:kBaseCookieName] && [cookie.domain isEqualToString:kBaseApiDomain]) {            return cookie;        }    }    return nil;}

本周提交测试、有一些bug要改,这个月发正式版,希望尽快完成!

0 0
原创粉丝点击