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

iOS设备如何检查是否存储了特定域名的Passkey?

检查设备是否存储对应域名的Passkey方法
  • 核心逻辑:利用WebAuthn API的静默检查能力,在不触发系统弹窗的前提下,判断设备是否保存了目标域名的Passkey。
  • 具体实现代码:
async function hasPasskeyForDomain() {
  try {
    const options = {
      publicKey: {
        rpId: "your-domain.com", // 替换为实际目标域名
        userVerification: "preferred",
        mediation: "silent"
      }
    };
    const credential = await navigator.credentials.get(options);
    return credential !== null;
  } catch (error) {
    // 无匹配Passkey或其他异常时返回false
    return false;
  }
}

// 调用示例
hasPasskeyForDomain().then(hasPasskey => {
  if (hasPasskey) {
    // 存在Passkey,触发正常登录弹窗
    navigator.credentials.get({
      publicKey: {
        rpId: "your-domain.com",
        userVerification: "preferred"
      }
    });
  } else {
    // 无Passkey,不展示Passkey登录选项
    console.log("当前设备无该域名的Passkey");
  }
});
  • 关键参数说明:
    • rpId:必须与创建Passkey时的rp.id一致,填写不带协议和端口的纯域名。
    • mediation: "silent":核心参数,让浏览器后台静默检查,不会弹出系统选择窗口,有匹配Passkey则返回凭证,否则抛出错误。
  • 注意事项:
    • 必须在HTTPS环境下运行(localhost开发环境不受限制)。
    • 主流浏览器(Chrome、Safari、Edge)均支持该特性,建议做兼容性测试。
    • 若设备存在多个对应域名的Passkey,静默模式会自动返回最近使用的凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:32:35