afnetworking - ios退出登陆A,更换账号B登陆,请求得到的仍然是A账号的数据
巴扎黑
巴扎黑 2017-04-17 15:41:19
0
3
352

退出时,做了如下操作:

  • (void)deleteCredient
    {

    //1、 NSDictionary *credentialsDict = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials]; if ([credentialsDict count] > 0) { // the credentialsDict has NSURLProtectionSpace objs as keys and dicts of userName => NSURLCredential NSEnumerator *protectionSpaceEnumerator = [credentialsDict keyEnumerator]; id urlProtectionSpace; // iterate over all NSURLProtectionSpaces while (urlProtectionSpace = [protectionSpaceEnumerator nextObject]) { NSEnumerator *userNameEnumerator = [[credentialsDict objectForKey:urlProtectionSpace] keyEnumerator]; id userName; // iterate over all usernames for this protectionspace, which are the keys for the actual NSURLCredentials while (userName = [userNameEnumerator nextObject]) { NSURLCredential *cred = [[credentialsDict objectForKey:urlProtectionSpace] objectForKey:userName]; [[NSURLCredentialStorage sharedCredentialStorage] removeCredential:cred forProtectionSpace:urlProtectionSpace]; } } } //2、 NSURLCache *sharedCache = [NSURLCache sharedURLCache]; [sharedCache removeAllCachedResponses]; //3、 NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *cookies = [cookieStorage cookies]; for (NSHTTPCookie *cookie in cookies) { [cookieStorage deleteCookie:cookie]; NSLog(@"deleted cookie"); } [[NSUserDefaults standardUserDefaults]synchronize];

    }
    再次登陆时,先获取到当前的登陆账号和密码,account,passwd并缓存到本地,
    所有的请求接口都被封装在如下方法中,采用的是NTLM认证:

  • (void)getWithURL:(NSString)url params:(NSDictionary)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
    {

    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; NSString *account = [ZYFUserDefaults objectForKey:ZYFAccountKey]; NSString *passwd = [ZYFUserDefaults objectForKey:ZYFPwdKey]; NSURLCredential *credential = [NSURLCredential credentialWithUser:[@"XXXXXX\\" stringByAppendingString:account] password:passwd persistence:NSURLCredentialPersistenceForSession]; mgr.credential = credential; [mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(responseObject); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if (failure) { failure(error); } }];

    }

巴扎黑
巴扎黑

reply all (3)
洪涛

应该换一个思路

绑定一个Device token,然后随便他怎么换账号都没用。

    大家讲道理

    登陆时把从服务器获取到的token存起来,之后所有的网络请求等操作都要带上token这个字段。

      小葫芦

      可以先清除缓存文件试试

        Latest Downloads
        More>
        Web Effects
        Website Source Code
        Website Materials
        Front End Template
        About us Disclaimer Sitemap
        php.cn:Public welfare online PHP training,Help PHP learners grow quickly!