成功登录应用程序后在 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 视图?