restkit ios:如果用户在第一次尝试中提供了错误的凭据,并且在后续尝试中提供了正确的凭据,则身份验证开始失败
当应用程序在第一次尝试中由于错误的用户名或密码而无法使用restkit成功登录/验证时,即使使用正确的用户名和密码,应用程序也不会成功,在此方面的任何帮助都将不胜感激。 在登录按钮上,我创建了restkit实例,并将信息传递给代码restkit ios:如果用户在第一次尝试中提供了错误的凭据,并且在后续尝试中提供了正确的凭据,则身份验证开始失败,ios,authentication,afnetworking,Ios,Authentication,Afnetworking,当应用程序在第一次尝试中由于错误的用户名或密码而无法使用restkit成功登录/验证时,即使使用正确的用户名和密码,应用程序也不会成功,在此方面的任何帮助都将不胜感激。 在登录按钮上,我创建了restkit实例,并将信息传递给代码 func sendLoginRequest(userName:String,password:String){ let authenticate:String = String(format: "%@:%@", userName, password
func sendLoginRequest(userName:String,password:String){
let authenticate:String = String(format: "%@:%@", userName, password)
let plainData = (authenticate as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let base64String = plainData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
print(base64String)
headers = ["Authorization" : String(format: "Basic %@", base64String)]
self.webInterface = DFWebInterface.shareWebInterface(DFModel.sharedInstance.bMockServer)
self.webInterface?.sendRequest(nil,request: LOGIN.rawValue, nil,headers: headers as! [NSObject : AnyObject])
}
然后初始化我的web接口类
-(id)init:(NSString*)strURL :(BOOL)mockServer{
if(nil!=(sDFWebInterface=[super init])){
NSURL *baseURL = [NSURL URLWithString:strURL];
DFAFHTTPClient* client=[[DFAFHTTPClient alloc] initWithBaseURL:baseURL];
sDFWebInterface->rkobjmanagerDF = [[RKObjectManager alloc] initWithHTTPClient:client];
[RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/plain"];
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
}
return sDFWebInterface;
}
初始化后,我创建映射并发送post请求
如果应用程序第一次发送正确的凭证,一切正常
这是通过正确凭证的第二次即使失败应用程序的日志
2016-02-11 12:07:44.242我的项目[7033:94063]I restkit.网络:RKObjectRequestOperation.m:150 POST''
2016-02-11 12:07:45.215 MyProject[7033:95645]E restkit.network:RKObjectRequestOperation.m:551对象请求失败:底层HTTP请求操作失败,错误为:错误域=org.restkit.restkit.ErrorDomain代码=-1011“在(200)中预期状态代码,得到401”用户信息={NSLocalizedRecoverySuggestion={”时间戳:“2016-02-11T06:37:45.103+0000”,“状态”:401,“错误”:“未经授权”,“消息”:“使用用户名和密码进行身份验证失败”,“路径”:“/api/v1/authenticate”},NSErrorFailingURLKey=,AFNetworkingOperationFailingURLRequestErrorKey={URL:},AFNetworkingOperationFailingURLResponseErrorKey={URL:}{状态代码:401,标头{
“缓存控制”=“无缓存,无存储,最大使用期限=0,必须重新验证”;
“内容长度”=171;
“内容类型”=“应用程序/json;字符集=UTF-8”;
日期=“2016年2月11日星期四06:37:44 GMT”;
Expires=0;
Pragma=“无缓存”;
服务器=”;
“设置Cookie”=“VCAP_ID=7487ff5a5d1940b895d0459b91eaec009a55f1ebd2774084b28fc6d24cab0f01;路径=/;仅HttpOnly”;
“严格的传输安全”=“最大年龄=31536000;包括子域”;
“Www Authenticate”=“Basic realm=”DEEPFIELD\”;
“X-Application-Context”=“网关开发人员:开发人员,云:0”;
“X-Cf-Requestid”=“b0f1e586-8b60-4413-646d-515dbbe1f097、954fd628-3beb-4777-41be-4eb50221b808”;
“X-Content-Type-Options”=nosniff;
“X帧选项”=拒绝;
“X-Xss-Protection”=“1;模式=块”;
}},NSLocalizedDescription=应为(200)中的状态代码,获得401}
2016-02-11 12:07:45.216 DeepField[7033:95645]E restkit.network:RKObjectRequestOperation.m:215 POST''(401个未经授权的/0对象)[请求=0.9732s映射=0.0000s总计=0.9869s]:错误域=org.restkit.restkit.ErrorDomain代码=-1011“在(200)中预期状态代码,得到401“用户信息={NSLocalizedRecoverySuggestion={”时间戳”:2016-02-11T06:37:45.103+0000,“状态”:401,“错误”:“未经授权”,“消息”:“使用用户名和密码进行身份验证失败”,“路径”:“/api/v1/authenticate”},NSErrorFailingURLKey=,AFNetworkingOperationFailingURLRequestErrorKey={URL:},AFNetworkingOperationFailingURLResponseErrorKey={URL:}{状态代码:401,标头{
“缓存控制”=“无缓存,无存储,最大使用期限=0,必须重新验证”;
“内容长度”=171;
“内容类型”=“应用程序/json;字符集=UTF-8”;
日期=“2016年2月11日星期四06:37:44 GMT”;
Expires=0;
Pragma=“无缓存”;
服务器=”;
“设置Cookie”=“VCAP_ID=7487ff5a5d1940b895d0459b91eaec009a55f1ebd2774084b28fc6d24cab0f01;路径=/;仅HttpOnly”;
“严格的传输安全”=“最大年龄=31536000;包括子域”;
“Www-Authenticate”=“基本领域”=“myproject\”;
“X-Application-Context”=“网关开发人员:开发人员,云:0”;
“X-Cf-Requestid”=“b0f1e586-8b60-4413-646d-515dbbe1f097、954fd628-3beb-4777-41be-4eb50221b808”;
“X-Content-Type-Options”=nosniff;
“X帧选项”=拒绝;
“X-Xss-Protection”=“1;模式=块”;
}},NSLocalizedDescription=应为(200)中的状态代码,获得401}
2016-02-11 12:07:45.216 DeepField[7033:94063]Post请求中服务器出错我刚刚为restkit httpclient重新设置了标头,它开始工作 RKOBJManager*rkobjmanagerDF [[rkobjmanager.HTTPClient defaultHeaders]setValue:@“应用程序/json”forKey:@“内容类型”];
[[rkobjmanagerDF.HTTPClient defaultHeaders]设置值:@“应用程序/json”分叉:@“接受”];这不是RestKit的问题。这是关于如何管理您的身份验证头的问题…感谢您的响应,但这两种情况下,我发送的是相同的头,除了授权值,但第一次我们输入正确的用户名时,它才起作用。但是,当我们第一次输入错误的密码时,在我退出应用程序并再次登录之前,无法再次登录。{“接受语言”=“en-US;q=1”;授权=“基本DGVZDEBKZWVWZMLBGQUY29TORLC3RUZXN0MTIZIQ=”;“用户代理”=“项目/1(iPhone;iOS 9.2;缩放/3.00)”;}