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.当第二次进入应用的时候

当第二次进入应用的时候,先判断NSUserDefaults是否有缓存的 Cookie, 如果有,需要将cookie 写入,然后进入应用.

NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"Cookie"]];
NSHTTPCookieStorage * cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie * cookie in cookies){
  [cookieStorage setCookie: cookie];
}
4.当用户选择退出登录,需要清除缓存中的 cookie, 同时要将NSUserDefaults
  • 清除请求头中的 Cookie
NSHTTPCookieStorage *manager = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookieStorage = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *cookie in cookieStorage) {
  [manager deleteCookie:cookie];
}
  • 清除NSUserDefault中的 Cookie
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"Cookie"];
[defaults synchronize];

注意:关于Cookie还有有效期,就看后台怎么定义,前端只要判断是否过了有效期,如果过了有效期,如果过了有效期,就需要用户重新登录,反之则不需要

本文参考iOS 关于 Cookie 验证登录状态,非常感谢该作者.

你可能感兴趣的:(iOS 关于 Cookie 验证登录状态)