iOS关于Cookie验证登录状态
1、第一次进入应用,登录获取Cookie,此时如果用到的是AFN去获取接口数据,Cookie已经写入了,所以无需处理,每次请求的时候,会自动将该cookie传给后台去验证
2、将Cookie缓存到本地:
NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject: cookiesData forKey:@"Cookie"];
[defaults synchronize];
3、当第二次进入应用的时候,先判断NSUserDefault是否有缓存的Cookie,如果有,需要将cookie写入,然后进入应用
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"Cookie"]];
NSHTTPCookieStorage * cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie * cookie in cookies){
[cookieStorage setCookie: cookie];
}
4、当用户选择退出登录,需要清除缓存中的cookie,同时要将NSUserDefault中的Cookie删除
(1)清除请求头中的Cookie:
NSHTTPCookieStorage *manager = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookieStorage = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *cookie in cookieStorage) {
[manager deleteCookie:cookie];
}
(2)清除NSUserDefault中的Cookie
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"Cookie"];
[defaults synchronize];
最新文章
- 关于asp的运行环境配置
- [译]rabbitmq 2.2 Building from the bottom: queues
- php MVC 及例子解释
- html中插入flash代码详解(转载)
- 中点Bresenham画圆
- [Servlet&;amp;JSP] 初识ServletContext
- js禁止滚动条移动
- java_泛型2
- yii 邮箱封装
- React-Native:解决真机调试时候Could not get BatchedBridge, make sure your bundle is packaged properly
- Confluence 6 安装一个语言组件
- java泛型的理解
- 【转】.Net Core中的Api版本控制
- php函数式编程
- 不要拿ERP的报表忽悠领导!——一个报表引发的企业经营反思
- sku 加减号的增删
- php基础-6
- Grid++Report
- xampp 教程
- 手把手教你写一个java的orm(完)