如何保持login,直到用户决定注销?

我正在devise一个应用程序,它使用Web服务,如发布链接和图片。 第一个视图控制器检查用户的默认用户名和密码,如果它是正确的,它允许用户login到家庭视图控制器,但如果它不正确,它将引导用户到login视图控制器(如果它的第一次该应用程序正在运行它也指示用户login视图控制器)。

我有不同的视图控制器连接到主视图控制器。 例如,其中一个用于将图片发布到网站,另一个用于发布链接到networking,另一个视图控制器用于改变用户简档的偏好。

我正在使用RestKit API在网上发布,这里是我用于发布的代码:

- (IBAction)addLinkPressed:(UIButton *)sender { [RKClient clientWithBaseURLString:@"http://MyWebsite.com"]; NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys: self.linkField.text, @"url", self.linkTitleField.text, @"title", self.linkSummaryField.text, @"summary", nil]; RKRequest *request = [[RKClient sharedClient] post:@"/send_link.php" params:params delegate:self]; [request setUserData:@"sendLink"]; } 

对于每个视图控制器,我将下面的方法放在viewDidLoad中,以便获取发布的身份validation:

 - (void)autoLogin { [RKClient clientWithBaseURLString:@"http://MyWebsite.com"]; [RKObjectManager sharedManager].client=[RKClient sharedClient]; RKParams *parameters = [RKParams params]; [parameters setValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultUsername"] forParam:@"username"]; [parameters setValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPassword"] forParam:@"password"]; [[RKClient sharedClient] setAuthenticationType:RKRequestAuthenticationTypeHTTP]; RKRequest *request = [[RKClient sharedClient] post:@"/login.php" params:parameters delegate:self]; [request setUserData:@"login"]; } 

问:除了login每个视图控制器之外,是否有任何方法从网站获取身份validation信息? login每个视图控制器的问题是有些日志logging过程给出错误,并且不允许用户POST。 我需要一种方法,只要用户input正确的用户名和密码,它将保持login状态,直到用户自己注销或删除应用程序。

我发现这个相对的问题,但这不是很有帮助,或者我不明白答案。 任何想法或想法,将不胜感激。

RestKit旨在使用API​​。 通常API是无状态的,这意味着在请求之间不存在状态之类的事情。 在传统的网站上,状态是通过在客户端和服务器之间来回传送cookie来实现的。 显然RestKit不处理cookies(这在我看来是好的)。 从我的头顶我可以想到两个解决scheme:

  • 显然RestKit不会自动处理cookie。 因此,您可以在login后获取cookie并将其附加到每个后续请求。
  • 更好:使用OAuth2,这基本上是用户login时接收到的令牌。然后将此令牌作为参数附加到每个请求。

两种方法基本相同。 您必须发送标识用户login的令牌。

如果我对你的情况了解得很清楚,你就有许多独立和独立行事的观察员。 这样做,您需要尽可能多的login次数作为您的应用程序pipe理的视图控制器的数量。

如果这是你的场景,你可以尝试创build一个类来完成login工作,并使用其他viewcontroller来处理GUI。

这将是你的架构:

其他类和viewcontrollers – > LOGINMANAGER – > viewcontroller 1(图片),视图控制器2(链接),视图控制器3(首选项),视图控制器4(无论)…