Ios 具有基本身份验证的WKWebView
我正在尝试创建一个简单的应用程序,使用Ios 具有基本身份验证的WKWebView,ios,authentication,wkwebview,swift5,xcode11,Ios,Authentication,Wkwebview,Swift5,Xcode11,我正在尝试创建一个简单的应用程序,使用WebView嵌入一个网站,除了我不知道如何对需要凭据的网站进行身份验证之外,一切都正常。 我在网上搜索了几个小时,终于放弃了寻找答案。可能只是我不知道该用什么措辞。 希望这里的任何人都知道硬编码凭证的方法,或者最好是用户输入自己凭证的方法 谢谢 我使用的代码是最简单的,如下所示: import SwiftUI import WebKit struct ContentView: View { var body: some View {
WebView
嵌入一个网站,除了我不知道如何对需要凭据的网站进行身份验证之外,一切都正常。
我在网上搜索了几个小时,终于放弃了寻找答案。可能只是我不知道该用什么措辞。
希望这里的任何人都知道硬编码凭证的方法,或者最好是用户输入自己凭证的方法
谢谢强>
我使用的代码是最简单的,如下所示:
import SwiftUI
import WebKit
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
WebView(request: URLRequest(url: URL(string: "https://siteurl")!))
}.navigationBarTitle("Example Text")
}
}
}
struct WebView: UIViewRepresentable {
let request: URLRequest
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(request)
}
}
您可以使用
WKNavigationDelegate
中的webView(uuxAE:didReceive:completionHandler:)
回调。从那里,您可以输入凭据并对网页进行身份验证
您可以按照以下方式实现它(伪代码):
请在此处阅读更多信息:
WKNavigationDelegate必须是类,而不是结构。重写
UIViewRepresentable
中的makeCoordinator()
,将WKWebView
绑定到WKNavigationDelegate
。请参阅。非常感谢您的回复,我一定是做错了什么,因为添加该代码会给我带来错误。我也尝试将代码改编成我已经得到的代码,但没有成功。是的,这是可能的,因为这是我写的一个快速草稿。当我有时间时,我会尝试更新我的答案。再次感谢你,你有时间再次查看代码吗?不幸的是,我没能让它工作。不知道我错过了什么
struct WebView: UIViewRepresentable, WKNavigationDelegate {
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
webView.navigationDelegate = self
return webView
}
func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping(URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
let credential = URLCredential(user: "username",
password: "password",
persistence: .forSession)
completionHandler(.useCredential, credential)
}
}