簡體   English   中英

在IOS應用程序中處理Cookie會保存登錄並在注銷時刪除

[英]Dealing with Cookies in IOS application save an login and delete at logout

我正在登錄屏幕中做一個項目,以回應電子郵件密碼作為響應,我需要存儲cookie並在用戶注銷時刪除cookie,所以我該如何處理我嘗試使用NSUrlSession和NSURLConnection進行的操作,但我不知道如何存儲cookie並刪除co​​okie

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM