更新记录
1.0.0(2026-11-01)
- 同一个插件包支持 uni-app Vue3 和 uni-app x Vapor / VDOM 的 Android / iOS App。
- 提供
.vue/.uvue两份演示,统一能力查询、写入、读取、存在性检查、删除、清空确认与 iOS 重装保留选项。 - 保留 Keychain / Keystore 存储标识和密文格式,无需下载第三方 SDK。
平台兼容性
uni-app(5.26)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | × | × | √ | × | √ | √ | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.26)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | √ | √ | × | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
UTS 安全加密存储(Keychain、Keystore)
austin-secstore-x 是同时支持 uni-app Vue3 和 uni-app x(Vapor / VDOM) 的 Android / iOS App 安全存储插件。两类项目使用同一个插件包、同一套 API 和相同的导入路径,无需为普通 uni-app 再接入另一份插件。
| 项目类型 | Android / iOS App | 演示文件 |
|---|---|---|
| uni-app Vue3 | 支持 | index.vue |
| uni-app x Vapor | 支持 | index.uvue |
| uni-app x VDOM | 支持 | index.uvue |
环境:HBuilderX 5.26+,Android 6.0+;iOS 最低系统版本以所用运行基座为准。Vue2、nvue 演示、Web、小程序和鸿蒙不在本版本支持范围内。
接入
将整个 austin-secstore-x 目录复制到项目 uni_modules,重新制作并安装包含插件的自定义基座。不需要额外权限、三方 SDK、Maven 或 CocoaPods 依赖。不要只复制 .vue / .uvue 演示文件,也不要在同一个 App 中同时安装旧版 austin-secstore。
普通 uni-app Vue3 与 uni-app x 使用相同的调用方式:
import {
setSecureItem, getSecureItem, hasSecureItem,
removeSecureItem, clearSecureItems, getSecureStorageCapabilities,
} from '@/uni_modules/austin-secstore-x'
const saved = setSecureItem('refresh_token', 'demo_token', {
surviveReinstall: false,
})
if (saved.ok) {
const result = getSecureItem('refresh_token')
if (result.ok && result.found) {
// result.value 是保存的字符串;不要将生产凭证写入日志。
}
}
在 UTS 页面中也可以显式使用接口类型:
import { setSecureItem, SecureStorageSetOptions } from '@/uni_modules/austin-secstore-x'
const options: SecureStorageSetOptions = { surviveReinstall: false }
const result = setSecureItem('refresh_token', 'demo_token', options)
所有接口同步返回对象。成功时 ok=true、errCode=0;失败时读取 errCode / errMsg。Key 会去掉首尾空白,空 Key 返回参数错误;Value 原样保存,允许空字符串。对象请先 JSON.stringify。
| API | 返回值的主要字段 |
|---|---|
setSecureItem(key, value, options?) |
ok、surviveReinstall(实际使用的策略) |
getSecureItem(key) |
ok、found、value;未命中是成功且 found=false |
hasSecureItem(key) |
ok、exists |
removeSecureItem(key) |
ok;不存在也可删除成功 |
clearSecureItems() |
ok;清空本插件管理的全部条目,含跨重装条目 |
getSecureStorageCapabilities() |
supported、ready、platform、usesSystemSecureStore、supportsStringValue、supportsReinstallReset、supportsSurviveReinstall、notes |
ready 表示平台实现可用,不保证设备当前解锁或每次 Keychain / Keystore 操作成功;仍需检查每次操作结果。hasSecureItem 表示条目存在,不保证密文可成功解密。
演示页
保留插件中的 .vue 与 .uvue 两个文件。普通 uni-app Vue3 使用 index.vue,uni-app x 使用 index.uvue,对应项目在宿主 pages.json 中注册相同路由,无需写扩展名。
uni-app x:
{ "path": "uni_modules/austin-secstore-x/index", "style": { "navigationBarTitleText": "安全加密存储", "disableScroll": true } }
普通 uni-app Vue3:
{ "path": "uni_modules/austin-secstore-x/index", "style": { "navigationBarTitleText": "安全加密存储", "disableScroll": true } }
普通 uni-app 演示页使用固定视口高度的 scroll-view,页面禁用外层滚动后仍可滚动查看全部操作和结果。两类项目都通过 uni.navigateTo({ url: '/uni_modules/austin-secstore-x/index' }) 打开。
两份演示均包含能力查询、写入、读取、存在性检查、删除、清空确认和 iOS 重装保留选项;读取结果在页面显示明文,不输出到控制台,请使用示例数据。
存储与重装策略
- iOS 使用 Keychain,访问级别为
WhenUnlockedThisDeviceOnly,设备锁定时读取可能失败,不提供跨设备同步或生物识别验证。 - 默认策略是在检测到新安装时清理默认 service;
surviveReinstall: true的条目放在独立 service。同设备、相同签名访问组下可能在重装后继续读取,不保证所有系统重置、签名变更、备份恢复场景。 - Android 使用 Keystore AES-256-GCM 管理主密钥,密文保存在应用私有 SharedPreferences,Key 作为附加认证数据。Key 名本身未加密。卸载或清除应用数据会丢失数据/密钥;
surviveReinstall不生效,返回false。 - 备份密文不能代替备份 Keystore 密钥;恢复后可能无法解密,业务应按凭证失效处理。
- 迁移沿用旧版
austin-secstore的 service、sentinel、Keystore alias、Preferences 名称及密文格式。相同应用标识、签名和数据容器下可以继续使用旧存储;这与项目类型是否相同无关。不要同时集成两版,clearSecureItems也会影响旧版条目。
安全存储适合 refreshToken 和设备凭证,普通缓存继续使用 uni.setStorage。本插件不保证 root / 越狱设备或应用进程被控制后的凭证安全。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 642
赞赏 4
下载 12731366
赞赏 1959
赞赏
京公网安备:11010802035340号