【问题标题】:What is the best practice to save access token in react-native app with redux?使用 redux 在 react-native 应用程序中保存访问令牌的最佳实践是什么?
【发布时间】:2018-01-13 02:58:12
【问题描述】:

使用 redux 在 react-native 应用程序中保存访问令牌的最佳做法是什么?

在 Redux 中,我曾经保存整个凭证,包括一些用户信息到状态:

//Actions
export const successfulLogin = (firebaseAuth) => ({
    type: 'LOGIN_SUCCESSFUL',
    firebaseAuth
});

//Reducer
const authentication = (state = {}, action) => {
    switch (action.type) {
        case 'LOGIN_SUCCESSFUL':
            return {
                ...state,
                firebaseAuth: action.firebaseAuth
            };
        default:
            return state;
    }
}
export default authentication

之后,我发现了一个新模块redux-persist,它可以帮助我将状态保存到设备存储中,localStorage。但是,商店中的所有内容都将被保存。使用 redux-persist 保存访问令牌是一种好习惯吗?

如果没有,我应该使用什么?

【问题讨论】:

    标签: firebase react-native redux


    【解决方案1】:

    这个问题被问到已经有一段时间了,但是使用 redux-persist 你不需要保存整个商店。您可以提供要存储的密钥,它将忽略您未指定的密钥。

    【讨论】:

      【解决方案2】:

      我认为您所描述的内容可行,但是如果您只需要一个访问令牌,则保存整个商店有点过头了。因此,我会说最好的做法是用一些代码来完成你所需要的。

      作为使用 redux-persist 的替代方法,您可以自己处理这个副作用:

      1. redux'createStore 被调用时从localStorage 中读取访问令牌,并将其传递到预加载状态。或者..
      2. 稍后发送类似 SET_ACCESS_TOKEN 的操作以将令牌添加到 redux 存储区。
      3. 要在成功登录后立即保存令牌,您可以在相应的异步操作创建器中触发副作用(调用负责向 localStorage 写入内容的模块)。

      就是这样,不需要额外的模块。

      【讨论】:

        猜你喜欢
        • 2012-12-04
        • 1970-01-01
        • 2016-04-25
        • 2014-06-01
        • 2020-02-25
        • 2016-02-28
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        相关资源
        最近更新 更多