在app中成功登录后,在safari中创建cookie

时间:2014-04-04 07:30:24

标签: ios iphone cookies safari

我有一个使用AFHTTPRequestOperationManager使用以下代码执行登录的应用程序:

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                            loginNameField.text, @"username",
                            loginPasswordField.text, @"password",
                            uniqueUserToken, @"device_id",
                            nil];

    NSMutableURLRequest* request = [self.operationManager.requestSerializer requestWithMethod:@"POST" URLString:LOGIN_URL parameters:params error:nil];

    AFHTTPRequestOperation* operation = [self.operationManager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {

    //completion block

    }

[self.operationManager.operationQueue addOperation:operation];

我想要做的是,一旦用户使用应用程序登录,就可以在Safari中创建一个cookie,这样用户就可以在浏览器中直接重定向到主站点而不是登录页面。

我尝试使用以下内容,但Safari仍然登陆网站的登录页面:

            NSString *myRequestString = [NSString stringWithFormat:@"username=%@&password=%@&device_id=%@", loginNameField.text, loginPasswordField.text, uniqueUserToken];

            NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length ]];

            NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:LOGIN_URL]];

            [request setHTTPMethod: @"POST" ];

            [request setHTTPBody:myRequestData];

            NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

            [connection release];

            [request release];

现在我了解iOS中的应用程序沙盒,因此这里的问题。我已经阅读了其他问题,但我对javaScript的了解还处于初期阶段。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我建议您使用NSHTTPCookie或使用UICKeyChainStore等库在KeychainStore中保存用户名和密码。然后在AppDelegate中,您可以检查用户是否已登录。我个人使用第二个选项,因为它会安全地保存数据,直到用户选择退出。但更临时的解决方案是只保存数据NSHTTPCookie

    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: theURL];
for (NSHTTPCookie *cookie in cookies) 
{
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] delete or set here];
}