退出时,做了如下操作:
(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);
}
}];
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
应该换一个思路
绑定一个Device token,然后随便他怎么换账号都没用。
登陆时把从服务器获取到的token存起来,之后所有的网络请求等操作都要带上token这个字段。
可以先清除缓存文件试试