0

I am doing a project in login screen am posting email password in response i need to store the cookies and delete the cookies when user logged out so how can i handle this i tried with NSUrlSession and NSURLConnection but i don't know how to store the cookie and delete the 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];
Thanks
  • 13
  • 7

1 Answers1

0

You can also user NSUserDefaults for saving the cookies data

- (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];
    }

}

Delete the cookies data at logout

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"sessionCookies"]

//When we saved the data, the key was "sessionCookies" so it must be sessionCookies for this specific saved data. You can name it as you like but then it must be same for saving, retrieving and deleting that specific data.

Please read out the Apple's documentation for NSUserDefaults.

Omer Waqas Khan
  • 2,423
  • 4
  • 33
  • 62