我正在学习以TypeScript编写的带有React Navigation和GraphQL的React Native。我将使用Facebook登录名供用户注册(通过Passport.js或Auth0)
如何在React Native中管理用户会话?我需要使用Redux吗?
请赐教。
答案 0 :(得分:2)
因为会话通常包含敏感信息,所以我建议避免使用AsyncStorage
或类似的解决方案。
对react-native-keychain使用更安全的方法。它将会话存储在安全存储中。
示例代码
import * as Keychain from 'react-native-keychain';
// When you want to store the session
const rawValue = JSON.stringify(session);
await Keychain.setGenericPassword('session', rawValue);
// When you want to retrieve the session
const credential = await Keychain.getGenericPassword();
const session = JSON.parse(credential.password)
答案 1 :(得分:0)
您可以使用AsyncStorage保存用户会话(数据)。请按照React Native async-storage的建议尝试使用该库Website
存储数据
storeData = async () => {
try {
await AsyncStorage.setItem('@storage_Key', 'stored value')
} catch (e) {
// saving error
}
}
读取数据
getData = async () => {
try {
const value = await AsyncStorage.getItem('@storage_Key')
if(value !== null) {
// value previously stored
}
} catch(e) {
// error reading value
}
}
答案 2 :(得分:0)
您可以在redux中添加用户会话,并使用redux-persist保留您的redux数据。
因此,每次调用远程端点时,将用户会话信息添加到api调用标头中