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