Autenticación básica con UIWebView

Leí una gran cantidad de publicaciones sobre SO sobre cómo podría aplicar la authentication básica.

He producido este código pero no muestra la página de inicio de session, solo se muestra una página en blanco. Las cnetworkingenciales que uso funcionan en el browser , así que este no es el problema. Mis delegates están bien.

No puedo determinar dónde falla mi código:

override func viewDidLoad() { super.viewDidLoad() webView.delegate = self self.loadPage() } func loadPage() { let url = "mypage.com/auht/Logon.do" let request = NSMutableURLRequest(URL: NSURL(string: url)!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 12) webView.loadRequest(request) } // MARK: NSURLConnectionDelegate Delegates func connection(connection: NSURLConnection, willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge) { if challenge.previousFailureCount == 0 { authenticated = true let cnetworkingential = NSURLCnetworkingential(user: "m.rinaldi13", password: "299792,458km/s", persistence: NSURLCnetworkingentialPersistence.ForSession) challenge.sender.useCnetworkingential(cnetworkingential, forAuthenticationChallenge: challenge) } else { challenge.sender.cancelAuthenticationChallenge(challenge) } } // MARK: Web View Delegates func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { if authenticated == nil { authenticated = false NSURLConnection(request: request, delegate: self) return false } return true } 

Cualquier ayuda / consejo será apreciada!

Encuentro una solución por mi mismo, excluyendo todos estos pases aburridos.

 func doRequestWithBasicAuth(completion : (success : Bool, html: String?, error : NSError?) -> Void) { if let user = self.user { let loginString = NSString(format: "%@:%@", user.login!, user.pwd!) let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)! let base64LoginString = loginData.base64EncodedStringWithOptions(nil) let url = NSURL(string: user.service!.getURL()) let request = NSMutableURLRequest(URL: url!) request.HTTPMethod = "POST" request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization") NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in if error == nil { let htmlString = NSString(data: data, encoding: NSUTF8StringEncoding) completion(success: true, html: htmlString as? String, error: nil) } else { completion(success: false, html: nil, error: error) } } } else { completion(success: false, html: nil, error: NSError()) } } 

Entonces, puedes mostrar de manera uniforme la página en la vista web de esta manera:

 self.doRequestWithBasicAuth({ (success, html, error) -> Void in if error == nil { self.webView.loadHTMLString(string: html, baseURL: <yourNSURL>) } }) 

Obviamente, puede (tenía) embellecer el código, como crear una class para el model Usuario:

 class User { var login: String? var pwd: String? func valueForHeaderFieldAuthorization() -> String { let loginString = NSString(format: "%@:%@", user.login!, user.pwd!) let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)! let base64LoginString = loginData.base64EncodedStringWithOptions(nil) return "Basic \(base64LoginString)" } }