更新记录
1.0.0(2025-08-26) 下载此版本
init
平台兼容性
Passkeys 通行密钥登录(uni-app API 插件)
基于 WebAuthn / Passkeys 标准的跨平台登录插件。
开发者只需传入后端返回的 options
,插件自动处理二进制转换、调用系统 UI(指纹/FaceID),并返回一个 payload,可直接提交给后端进行验证。
✨ 功能亮点
- 🚀 极简 API:输入后端 options → 输出 payload → 回传后端
- 🔒 高安全性:本地私钥签名,后端只保存公钥
- 🌍 跨平台:支持 H5(WebAuthn),未来支持 Android/iOS(UTS 原生能力)
- 🎯 开发者无感:无需关心 base64url、ArrayBuffer 等复杂逻辑
📦 安装
将插件导入到你的 uni-app 项目中,并在代码中引入:
import { createRegistrationRequest, createAuthenticationRequest } from '@/uni_modules/pass-keys';
🚀 使用方法
1. 注册(Register)
// 1. 向后端请求注册 options
const { options, userId } = await api.post('/passkeys/register/options', { username });
// 2. 调用插件,传入 options,得到注册 payload
const payload = await createRegistrationRequest(options);
// 3. 将 payload 回传后端进行验证
await api.post('/passkeys/register/verify', { userId, response: payload });
返回结果示例:
{ "ok": true }
2. 登录(Login)
// 1. 向后端请求登录 options
const { options, userId } = await api.post('/passkeys/login/options', { username });
// 2. 调用插件,传入 options,得到登录 payload
const payload = await createAuthenticationRequest(options, { conditional: true });
// 3. 将 payload 回传后端验证,并获取 token
const { token } = await api.post('/passkeys/login/verify', { userId, response: payload });
返回结果示例:
{ "verified": true, "token": "eyJhbGciOi..." }
📘 API 说明
createRegistrationRequest(options)
- 参数:后端返回的注册 options(含
challenge
和user.id
,为 base64url 字符串) - 返回:可直接传给
/register/verify
的 payload
{
id: string;
rawId: string;
type: 'public-key';
response: {
clientDataJSON: string;
attestationObject: string;
}
}
createAuthenticationRequest(options, opts?)
- 参数:后端返回的登录 options(含
challenge
,allowCredentials
) - opts.conditional:是否启用“免用户名自动弹窗”模式(Chrome ≥ 108 支持)
- 返回:可直接传给
/login/verify
的 payload
{
id: string;
rawId: string;
type: 'public-key';
response: {
clientDataJSON: string;
authenticatorData: string;
signature: string;
userHandle: string | null;
}
}
⚠️ 注意事项
- 必须运行在 HTTPS 或
localhost
环境下。 - iOS 需开启 iCloud 钥匙串 才能使用 Passkeys。
- 小程序不支持 WebAuthn,本插件仅支持 H5 / App。
- App 端原生支持(Android/iOS)将在后续版本提供。
🗂️ 版本计划
- v0.1.x:支持 H5 (WebAuthn)
- v0.2.x:支持 Android/iOS 原生能力(UTS API 插件)
- v0.3.x:提供完整 Demo 项目 & TypeScript 类型增强