gpt4 book ai didi

ios - iOS 8 的基本身份验证失败

转载 作者:可可西里 更新时间:2023-11-01 04:51:35 27 4
gpt4 key购买 nike

我有一个与运行 Rails 的服务器交互的 iOS 应用程序,并且已经稳定可靠了 3 年。服务器需要 Basic 和 SSL 认证,这在 iOS 7(包括 iOS 7)之前一直运行良好。

但是,我现在发现运行 iOS 8 的设备存在身份验证问题。运行 < iOS 8 的设备/模拟器继续正常工作。

在应用程序初始化时,有大量数据请求与需要通过基本身份验证的服务器同步。

这些导致调用以下委托(delegate)方法,

willSendRequestForAuthenticationChallenge

...问题的发生是因为这些被无休止地挑战 - 当 [challenge previousFailureCount] > 0 时,代码在第二次尝试时故意失败(代码路径遵循标准做法,如果 previousFailureCount > 0,则调用 cancelAuthenticationChallenge) - 请参阅下面。

我已经记录了挑战 ID,这些 ID 在每个挑战中都是不同的,即使 previousFailureCount > 0 也是如此。

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodHTTPBasic])
{
if ([challenge previousFailureCount] == 0)
{
NSURLCredential *newCredential;

newCredential = [NSURLCredential credentialWithUser:MY_USERNAME
password:MY_PASSWORD
persistence:NSURLCredentialPersistenceForSession]; // Retain for rest of session

[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
}
else
{
[[challenge sender] cancelAuthenticationChallenge:challenge];

// ...error will be handled by connection didFailWithError
}
}
}

如果我敲掉检查 previousFailureCount 的调用,挑战方法将被无限调用。

但是,一旦这一系列的失败失败,后续和之后的“个人”NSUrlRequests 就会成功通过身份验证。

同样,这个问题是 iOS 8 特有的。关于为什么“快速”连续的身份验证请求在 iOS 8 中会失败,但在 iOS 7 中有效,有什么想法吗?

谢谢。

最佳答案

如果您不处理身份验证方法 (NSURLAuthenticationMethodHTTPBasic),您必须无论如何调用这些方法之一:

useCredential:forAuthenticationChallenge:

continueWithoutCredentialForAuthenticationChallenge:

cancelAuthenticationChallenge:

performDefaultHandlingForAuthenticationChallenge:

rejectProtectionSpaceAndContinueWithChallenge:

如果您想忽略某种身份验证方法,您可能希望调用 performDefaultHandlingForAuthenticationChallenge:

另请参阅:connection:willSendRequestForAuthenticationChallenge:

关于ios - iOS 8 的基本身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com