1. 第一次進入應(yīng)用
第一次進入應(yīng)用,登錄獲取 Cookie, 此時如果用到的是 AFN 取獲取接口數(shù)據(jù), Cookie 已經(jīng)寫入了,所以無需處理,每次請求的時候,會自動將該 cookie 傳給后臺去驗證.
2. 將 Cookie 緩存到本地
NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject: cookiesData forKey:@"Cookie"];
[defaults synchronize];
3.當?shù)诙芜M入應(yīng)用的時候
當?shù)诙芜M入應(yīng)用的時候,先判斷NSUserDefaults是否有緩存的 Cookie, 如果有,需要將cookie 寫入,然后進入應(yīng)用.
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];
注意:關(guān)于Cookie還有有效期,就看后臺怎么定義帚屉,前端只要判斷是否過了有效期权悟,如果過了有效期,如果過了有效期竹握,就需要用戶重新登錄,反之則不需要
本文參考iOS 關(guān)于 Cookie 驗證登錄狀態(tài),非常感謝該作者.