restkit ios:如果用户在第一次尝试中提供了错误的凭据,并且在后续尝试中提供了正确的凭据,则身份验证开始失败

restkit ios:如果用户在第一次尝试中提供了错误的凭据,并且在后续尝试中提供了正确的凭据,则身份验证开始失败,ios,authentication,afnetworking,Ios,Authentication,Afnetworking,当应用程序在第一次尝试中由于错误的用户名或密码而无法使用restkit成功登录/验证时,即使使用正确的用户名和密码,应用程序也不会成功,在此方面的任何帮助都将不胜感激。 在登录按钮上,我创建了restkit实例,并将信息传递给代码 func sendLoginRequest(userName:String,password:String){ let authenticate:String = String(format: "%@:%@", userName, password

当应用程序在第一次尝试中由于错误的用户名或密码而无法使用restkit成功登录/验证时,即使使用正确的用户名和密码,应用程序也不会成功,在此方面的任何帮助都将不胜感激。 在登录按钮上,我创建了restkit实例,并将信息传递给代码

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)”;}