如何在React Native中管理用户会话?

时间:2019-09-03 18:15:30

标签: javascript typescript react-native

我正在学习以TypeScript编写的带有React Navigation和GraphQL的React Native。我将使用Facebook登录名供用户注册(通过Passport.js或Auth0)

如何在React Native中管理用户会话?我需要使用Redux吗?

请赐教。

3 个答案:

答案 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调用标头中