JavaScript
对应的官方页面地址
您的前端使用 Passwordless.dev JavaScript 客户端来完成与浏览器的 FIDO2 WebAuthn 加密交换。
所有方法都要求使用您的 API 公钥进行身份验证。对私有 API 发出的请求则需要您的 API 私有机密。
安装
要安装 Passwordless.dev JavaScript 客户端:
yarn add @passwordlessdev/passwordless-client在所有情况下,您的前端都必须导入库才能调用本文档中的方法:
import { Client } from '@passwordlessdev/passwordless-client';
const p = new Client({ apiKey: "" })npm install @passwordlessdev/passwordless-client在所有情况下,您的前端都必须导入库才能调用本文档中的方法:
import { Client } from '@passwordlessdev/passwordless-client';
const p = new Client({ apiKey: "" })在所有情况下,您的前端都必须导入库才能调用本文档中的方法:
<script type="module">
import { Client } from "https://cdn.passwordless.dev/dist/1.1.0/esm/passwordless.min.mjs"
const p = new Client({ apiKey: "" })
</script><script src="https://cdn.passwordless.dev/dist/1.1.0/umd/passwordless.umd.min.js" crossorigin="anonymous"></script>在所有情况下,您的前端都必须导入库才能调用 Passwordless.dev 使用的方法:
<script>
const Client = Passwordless.Client;
const p = new Client({});
</script>.register()
调用 .register() 方法从后端获取一个注册令牌,以授权在最终用户的设备上创建一个通行密钥,例如:
// 使用您的 API 公钥实例化无密码客户端。
const p = new Passwordless.Client({
apiKey: "myapplication:public:4364b1a49a404b38b843fe3697b803c8"
});
// 从后端获取注册令牌。
const backendUrl = "https://localhost:8002";
const registerToken = await fetch(backendUrl + "/create-token?userId" + userId).then(r => r.json());
// 在最终用户的设备上注册令牌。
const { token, error } = await p.register(registerToken);成功实施后,将提示 Passwordless.dev 通过用户的网页浏览器 API 协商创建一个通行密钥,并将其公钥保存到数据库中以供将来的登录操作。
.signinWith()
调用 .signin 方法生成一个身份验证令牌,后端将检查该令牌以完成登录。有几种不同的 .signinWith*() 方法可用:
.signinWithAutofill()
触发浏览器原生自动填充 UI 以选择身份然后登录。
verify_token = await p.signinWithAutofill();
.signinWithDiscoverable()
触发浏览器原生提示 UI 以选择身份然后登录。
verify_token = await p.signinWithDiscoverable();
.signinWithId(id)
使用 userId 来指定用户。
verify_token = await p.signinWithId(userId);
响应
所有 .signinWith*() 方法都会返回一个具有两个属性的对象,通常解构为:
如果登录成功,此 token 将具有一个字符串值 "verify_xxyyzz"。如果登录失败,此 error 属性将包含问题详细信息。
.isBrowserSupported()
调用静态 .isBrowserSupported() 方法来检查最终用户的浏览器是否支持基于通行密码的 FIDO2 WebAuth 身份验证,例如:
.isPlatformSupported()
调用静态异步 .isPlatformSupported() 方法来检查最终用户设备或浏览器是否支持 Windows Hello 等平台身份验证,例如:
.isAutofillSupported()
调用静态异步 .isAutofillSupported() 方法来检查最终用户的设备或浏览器是否支持在自动填充对话框中列出通行密钥,例如:
最后更新于