我正在使用RKClient
和进行get
请求的RestKit。我的系统使用用户名/密码/账户来验证用户身份。仅使用httpbasic进行用户名/密码验证,而账户只是子域。
我的问题是,如果我按照以下步骤操作:
- 使用正确的信息登录(然后下载应用程序的所有数据)
- 重置数据(这将删除所有我的核心数据对象,并且我还将共享RKClient的用户名和密码设置为空白)
- 输入错误的用户名/密码,但是正确的账户,然后它会下载数据,就像一切都是正确的一样。
我在设置用户名和密码之前和之后添加了put,并且我可以看到它被更改为不正确的数据。而且我已经将缓存设置为RKRequestCachePolicyNone
(在共享客户端和RKRequest实例上都设置了)。
返回的请求表示它没有从缓存中获取。当我尝试使用curl在终端中复制问题时,我得到了正确的响应(即我无法使用错误的用户名密码获取数据)。
那么为什么/如何RestKit会获得正确的响应?它正在访问服务器并获得200的响应。
示例代码:
- (void)startDownload {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"username and password before (%@,%@)",[RKClient sharedClient].username,[RKClient sharedClient].password);
[RKClient sharedClient].username = self.login;
[RKClient sharedClient].password = self.password;
NSLog(@"username and password after (%@,%@)",[RKClient sharedClient].username,[RKClient sharedClient].password);
NSString *base = [NSString stringWithFormat:@"http://%@.%@api",self.accountName,[defaults stringForKey:@"myURL"]];
[[RKClient sharedClient] setBaseURL:base];
[[RKClient sharedClient] setAuthenticationType:RKRequestAuthenticationTypeHTTPBasic];
[[RKClient sharedClient] setCachePolicy:RKRequestCachePolicyNone];
RKRequest *request = [[RKClient sharedClient] get:@"/verify.json" delegate:self];
[request setCachePolicy:RKRequestCachePolicyNone];
}
更新
我注意到,如果我在第一次登录时输入错误的密码并返回失败,如果我之后更正了密码,那么它将始终失败。