成功登录应用程序后在 safari 中创建 cookie

Posted

技术标签:

【中文标题】成功登录应用程序后在 safari 中创建 cookie【英文标题】:Create cookie in safari after successful login in app 【发布时间】:2014-04-04 07:30:23 【问题描述】:

我有一个应用程序使用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】:

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

    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: theURL];
for (NSHTTPCookie *cookie in cookies) 

    [[NSHTTPCookieStorage sharedHTTPCookieStorage] delete or set here];

【讨论】:

以上是关于成功登录应用程序后在 safari 中创建 cookie的主要内容,如果未能解决你的问题,请参考以下文章

成功部署后,在/ var / app / current目录中创建文件

Firebase Auth (android) 后在数据库中创建用户

如何在使用自定义用户代理的 SwiftUI 中创建 Safari 视图?

Laravel 应用程序 |只有 Safari 有时会在请求中丢失 XSRF Coo​​kie

数据库完成后在 Access 中创建报表

部署成功后在 /var/app/current 目录下创建文件