在private-native中存储私有数据的最佳方法是什么?

时间:2017-08-07 13:05:56

标签: javascript database react-native keychain expo

在通过反应应用程序进行身份验证时,如何实现remember me等功能?我认为未加密的AsyncStorage并不是最好的方法,因为数据对用户是开放的。我曾尝试使用realm,但遇到了使用expo来测试应用程序无法在Android中解决的问题。它说我需要为android编译本机代码并编辑它(在MainApplication.js中添加领域对象创建)。我还不想编译我的项目,因为它尚未发布。 instagram和其他RN-apps如何存储身份验证数据?什么是最好的方法?

3 个答案:

答案 0 :(得分:8)

  

在react-native中存储私有数据的最佳方法是什么?

我建议使用像react-native-keychain这样的库来存储react-native

中的私人数据

你可以这样使用它:

// Generic Password, service argument optional
Keychain
  .setGenericPassword(username, password)
  .then(function() {
    console.log('Credentials saved successfully!');
  });

// service argument optional
Keychain
  .getGenericPassword()
  .then(function(credentials) {
    console.log('Credentials successfully loaded for user ' + credentials.username);
  }).catch(function(error) {
    console.log('Keychain couldn\'t be accessed! Maybe no value set?', error);
  });

我希望我的回答很有帮助

答案 1 :(得分:0)

unicode提供了一种在设备上本地加密和安全存储键值对的方法。

使用 $ python3 -m perf timeit 'str("hello world")' ..................... Mean +- std dev: 150 ns +- 12 ns $ python3 -m perf timeit -s 'import builtins' -s 'str = builtins.str' 'str("hello world")' ..................... Mean +- std dev: 124 ns +- 3 ns $ pypy3 -m perf timeit 'str("hello world")' ......... Mean +- std dev: 8.28 ns +- 0.39 ns $ pypy3 -m perf timeit -s 'import builtins' -s 'str = builtins.str' 'str("hello world")' ........ Mean +- std dev: 0.65 ns +- 0.01 ns 存储和Expo.SecureStore检索数据。

文档:https://docs.expo.io/versions/latest/sdk/securestore

答案 2 :(得分:-2)

您可以使用react-native的简单存储来保存pair key =>值,TypeScript中的下一个类可以帮助您:

export class MyStorage {

     handler: Storage;

    constructor(){
        this.handler = require('react-native-local-storage');
    }

    public saveData(key: string, value: string){
        this.handler.save(key,value).then(() => {
            this.handler.get(key).then((data) => {console.log("get: ", data)});

          })
    }

    public getData(key: string) : Promise<any> {        
      return this.handler.get(key);
    }

}
  • saveData方法存储可以通过“密钥”访问的“值”。
  • getData返回包含使用“key”保存的值的Promise。