我正在考虑在React Native应用程序中存储用户访问令牌。最初我一直在看Redux但是我注意到RN有AsyncStorage
,现在我假设在IOS的情况下这相当于NSUserDefaults
。我可能错了。
这是存储访问令牌的好方法吗?如果我可以帮助它进行简单的数据存储,我真的不想完成使用Redux的过程。
答案 0 :(得分:5)
AyncStorage可能不是一个好的解决方案,取决于服务器处理您的请求的方式。
但是你可以使用Redux和Redux-persist,使用你可以加密数据的transform参数,
https://github.com/rt2zz/redux-persist#transforms
密钥加密:https://github.com/maxdeviant/redux-persist-transform-encrypt
您仍将使用AsyncStorage,但这次使用加密层来保护您的数据
答案 1 :(得分:2)
Redux
是关于数据流控制的。不一定是长期存储。如果您想保留redux数据,最终会使用AsyncStorage
来执行此操作。
AsyncStorage在非越狱的iOS设备上进行沙盒处理。但是,数据没有以任何方式加密。
两个平台的更安全的解决方案似乎是https://github.com/pradeep1991singh/react-native-secure-key-store
答案 2 :(得分:0)
AsyncStorage
对于敏感信息不安全。阅读更多here
在您的使用案例中,最好使用Firebase服务来获取令牌。 当应用程序启动时,您可以执行类似
的操作var auth = firebase.auth().onAuthStateChanged(function(user) {
if (user) {
user.getIdToken().then(function(data) {
console.log(data)
// Save it redux, or component state(in that case you need to do this in every component where token will be used
// Unsubscribe from listener
auth()
});
} else {
// User is not authenticated
// Unsubscribe from listener
auth()
}
});
答案 3 :(得分:0)
这是安全的。另外,如果我没记错的话(在以下任何一项中都不要引用我),您可以使用它使用户能够登录该设备上的同一应用程序/网络应用程序;或其他设备。我还认为您可以与开发的其他应用程序共享登录详细信息,前提是这些应用程序在捆绑标识符中具有相同的域。