@heywhy/ns-secure-storage
添加插件描述
npm i --save @heywhy/ns-secure-storage

@heywhy/ns-secure-storage

NPM version Twitter Follow

安装

从命令提示符进入您的应用程序根目录并执行

ns plugin add @heywhy/ns-secure-storage

使用方法

此插件与 @nativescript/secure-storage 具有相同的 API,但进行了改进。

iOS 安全性增强+

默认情况下,插件使用 kSecAttrAccessibleAlwaysThisDeviceOnly 访问控制到密钥链。这意味着即使在设备锁定的情况下也可以访问密钥链值。如果您想增强安全性并且不需要后台访问,或者如果您想允许值被备份并迁移到另一台设备,您可以在创建 SecureStorage 实例时使用以下任何密钥并传递它,例如

declare const kSecAttrAccessibleWhenUnlockedThisDeviceOnly; // This is needed in case you don't have tns-platform-declarations module installed. 
const secureStorage = new SecureStorage({accessibilityType: kSecAttrAccessibleWhenUnlockedThisDeviceOnly})

iOS 模拟器

目前此插件默认在 iOS 模拟器 上使用 NSUserDefaults。您可以通过向 SecureStorage 构造函数提供 disableFallbackToUserDefaults 来更改此行为。这样,在模拟器上就使用密钥链而不是 NSUserDefaults

const secureStorage = new SecureStorage({disableFallbackToUserDefaults: true})

如果您遇到类似 issue_10 的问题,请考虑再次使用默认行为。

iOS 密钥链访问组

您可以通过密钥链访问组在应用程序/扩展之间共享秘密。

设置方法

  • 通过在 app/App_Resources/iOS/<someName>.entitlements 文件中添加条目来将密钥链访问组权限添加到您的应用程序。

    例如:

    <key>keychain-access-groups</key>
    <array>
    <string>$(AppIdentifierPrefix)com.my.app.sharedgroup</string>
    </array>
  • 然后在您的应用程序中指定获取/设置值时的 accessGroup 属性。例如:

    import { SecureStorage } from "@heywhy/ns-secure-storage";

    export class MyComponent {
    secureStorage = new SecureStorage();
    // a method that can be called from your view
    setSecureValue() {
    this.secureStorage.set({
    accessGroup:"<TeamID>.com.my.app.sharedgroup",
    key: 'myKey',
    value: 'my value'
    }).then(success => { console.log(success)});
    }
    }

许可证

Apache 许可证版本 2.0