You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WKWebView HTTP身份验证时如何将账号密码保存到加载页域名而非APP关联域名

可行实现方案

  • 手动管理凭据存储,关联到目标站点的保护空间
    你可以放弃依赖系统对自定义弹窗输入框的自动凭据保存逻辑,手动将用户输入的用户名密码存入系统凭据库,绑定到当前加载页面对应的域名下:
    1. 在webView(_:didReceive:completionHandler:)代理方法中,先获取当前认证挑战的protectionSpace对象,该对象本身就包含了目标站点的域名、端口、认证类型等信息,不需要额外构造。
    2. 用户在你的自定义弹窗输入完成后,先构造URLCredential实例,调用URLCredentialStorage.shared.setCredential(_:for:)方法,将凭据和刚才获取的protectionSpace绑定,选择永久存储的话系统会将该凭据归到目标站点域名下,不会关联你App的关联域名。
    3. 最后调用代理方法的completionHandler,传入构造好的凭据完成认证流程即可。
  • 禁用自定义输入框的默认自动填充关联
    为了避免系统主动从你的自定义输入框提取内容关联到App域名,你可以给两个输入框做如下配置:
    // 用户名输入框配置
    usernameTextField.textContentType = .username
    usernameTextField.autocorrectionType = .no
    usernameTextField.smartInsertDeleteType = .no
    // 密码输入框配置
    passwordTextField.textContentType = .password
    passwordTextField.passwordRules = nil
    passwordTextField.isSecureTextEntry = true
    
    如果需要保留自动填充功能,可以在弹窗上加一行提示,说明凭据会保存到当前访问的站点域名下,降低用户困惑。
  • 后续验证
    完成配置后你可以在iOS系统「设置-密码」中搜索目标站点域名,确认保存的凭据归属到对应站点条目下,不属于你的App关联域名的凭据列表。

内容的提问来源于stack exchange,提问作者Runt8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:15:02