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

一般在网页中用到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要改,这个月发正式版,希望尽快完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT_Elon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值