Saltar al contenido

Autenticación con WKWebView en Swift

Ten en cuenta que en las ciencias informáticas cualquier problema puede tener más de una resoluciones, no obstante te mostraremos lo más óptimo y mejor.

Solución:

Agregue la siguiente línea:

completionHandler(NSURLSessionAuthChallengeDisposition.UseCredential, credential)

al final de didReceiveAuthenticationChallenge resuelve el problema.

llego tarde a la fiesta, pero aun así esto puede ser útil para alguien.

Para admitir el desafío de autenticación en WKWebview Swift 4, complete el código como se muestra a continuación

func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void)  authenticationMethod == NSURLAuthenticationMethodHTTPDigest 
            let av = UIAlertController(title: webView.title, message: String(format: "AUTH_CHALLENGE_REQUIRE_PASSWORD".localized, hostname), preferredStyle: .alert)
            av.addTextField(configurationHandler:  (textField) in
                textField.placeholder = "USER_ID".localized
            )
            av.addTextField(configurationHandler:  (textField) in
                textField.placeholder = "PASSWORD".localized
                textField.isSecureTextEntry = true
            )

            av.addAction(UIAlertAction(title: "BUTTON_OK".localized, style: .default, handler:  (action) in
                guard let userId = av.textFields?.first?.text else
                    return
                
                guard let password = av.textFields?.last?.text else 
                    return
                
                let credential = URLCredential(user: userId, password: password, persistence: .none)
                completionHandler(.useCredential,credential)
            ))
            av.addAction(UIAlertAction(title: "BUTTON_CANCEL".localized, style: .cancel, handler:  _ in
                completionHandler(.cancelAuthenticationChallenge, nil);
            ))
            self.parentViewController?.present(av, animated: true, completion: nil)
        else if authenticationMethod == NSURLAuthenticationMethodServerTrust
            // needs this handling on iOS 9
            completionHandler(.performDefaultHandling, nil);
        else
            completionHandler(.cancelAuthenticationChallenge, nil);
        
    

Más adelante puedes encontrar los comentarios de otros administradores, tú incluso tienes el poder dejar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *