![](/img/trans.png)
[英]Got Solution How to store the cookies in login and delete the cookies in logout action
[英]Dealing with Cookies in IOS application save an login and delete at logout
我正在登錄屏幕中做一個項目,以回應電子郵件密碼作為響應,我需要存儲cookie並在用戶注銷時刪除cookie,所以我該如何處理我嘗試使用NSUrlSession和NSURLConnection進行的操作,但我不知道如何存儲cookie並刪除cookie
NSString *noteDataString = [NSString stringWithFormat:@"user[email]=%@&user[password]=%@", userNameTF.text, passWordTF.text];
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.HTTPShouldSetCookies = YES;
sessionConfiguration.HTTPAdditionalHeaders = @{
@"Accept": @"application/json"
};
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];
NSURL *url = [NSURL URLWithString:@"http://URL/login"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPBody = [noteDataString dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPMethod = @"POST";
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSDictionary * dd = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSString * role = [dd objectForKey:@"role"];
if ([role isEqualToString:@"user"]) {
UIStoryboard * storyBD = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController * obj = [storyBD instantiateViewControllerWithIdentifier:@"tab"];
[self.navigationController pushViewController:obj animated:YES];
}
NSLog(@"%@",dd);
}];
[postDataTask resume];
您也可以使用NSUserDefaults保存cookie數據
- (void)saveCookies{
NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject: cookiesData forKey: @"sessionCookies"];
[defaults synchronize];
}
- (void)loadCookies{
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData: [[NSUserDefaults standardUserDefaults] objectForKey: @"sessionCookies"]];
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in cookies){
[cookieStorage setCookie: cookie];
}
}
注銷時刪除Cookie數據
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"sessionCookies"]
//當我們保存數據時,鍵是“ sessionCookies”,因此對於此特定的已保存數據,它必須是sessionCookies。 您可以隨意命名,但保存,檢索和刪除特定數據時必須相同。
請閱讀Apple的NSUserDefaults文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.