У меня есть UIWebView
, идущий на сайт с кнопкой входа. Когда нажата кнопка входа в систему (например, в Safari), она запрашивает логин, а затем вызывает веб-службу, которая аутентифицируется через AD и регистрирует пользователя. Я пытаюсь заставить это работать в моем UIWebView
, но didReceiveAuthenticationChallenge
никогда не вызывается. Есть идеи?didReceiveAuthenticationChallenge не называется
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
{
NSLog(@"Authed = %d", _authed);
NSLog(@"Did start loading: %@ auth:%d", [[request URL] absoluteString], _authed);
NSString *theURL = [[request URL] absoluteString];
currentURL = [[request URL] absoluteString];
if (!_authed) {
_authed = NO;
[[NSURLConnection alloc] initWithRequest:request delegate:self];
NSLog(@"shouldStartLoadWithRequest Return NO");
return NO;
}
NSLog(@"shouldStartLoadWithRequest Return YES");
return YES;
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
{
NSLog(@"got auth challange");
NSLog(@"previousFailureCount = %d", [challenge previousFailureCount]);
ch = challenge;
[[challenge sender] useCredential:[NSURLCredential credentialWithUser:@"myusername" password:@"mypassword" persistence:NSURLCredentialPersistencePermanent] forAuthenticationChallenge:challenge];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
{
NSLog(@"received response via nsurlconnection");
_authed = YES;
NSString *urladdress = currentURL;
NSURL *url = [NSURL URLWithString:urladdress];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[itemWebView loadRequest:urlRequest];
}
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection;
{
return NO;
}
Есть ли способ, возможно, вручную вызвать метод didReceiveAuthenticationChallenge
?
Этот метод предназначен для предоставления учетных данных в ответ на вызов HTTP Auth с сервера, а не для выполнения более типичной проверки подлинности на основе форм. Вы уверены, что сайт использует HTTP Auth? –
Привет, Джон, да, это не проверка подлинности на основе форм. Когда кнопка входа в систему нажата на странице (в Safari), пользователю будет предложено ввести экран входа в систему ntfs, который должен вызвать метод, но по какой-то причине это не так. – DavidB