我使用NSURLConnection
连接到服务器。服务器要求我使用委托方法的基本身份验证: - didReceiveAuthenticationChallenge
。但这只被召唤一次。如果我将密码更改为某个不同的值,那么这个delegate
方法不会被调用,并且我的登录成功了吗?
任何形式的帮助都将受到赞赏。
感谢。
答案 0 :(得分:6)
解决!
事实证明NSURLConnection
实际上表现正常 - 也就是说,每次身份验证质询都会调用didReceiveAuthenticationChallenge:
。
问题是服务器在第一个之后没有发送挑战。结果是因为服务器正在设置cookie。
您只需删除Cookie即可强制执行新的挑战。因为此服务器没有其他有用的cookie,所以我只删除所有这些:
- (void)clearCookiesForURL {
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [cookieStorage cookiesForURL:_URL];
for (NSHTTPCookie *cookie in cookies) {
NSLog(@"Deleting cookie for domain: %@", [cookie domain]);
[cookieStorage deleteCookie:cookie];
}
}
答案 1 :(得分:1)
您必须执行以下步骤才能完全关闭会话。
答案 2 :(得分:1)
不幸的是,目前还没有简单的方法可以满足您的要求:
Apple提供信息的说明: TLS Session Cache
打开Radar错误请求: No way to clear TLS Cache with NSURLConnection
答案 3 :(得分:0)
NSURLConnection将缓存凭据。这是一种查找和删除特定凭据的方法(因此您再次受到质疑):
希望对你有用, 史蒂夫