【问题标题】:AWS amplify how to implement currrentSession on a React app with Redux?AWS 放大如何使用 Redux 在 React 应用程序上实现 currrentSession?
【发布时间】:2018-05-20 06:14:10
【问题描述】:

AWS amplify documentation 显示

let session = Auth.currentSession(); // CognitoUserSession => { idToken, refreshToken, accessToken }

检索工作正常的当前会话。

但是,我不确定如何使用 Redux 将其实现到我的 React 应用程序中。 当用户重新加载网页以及登录用户的所有 UI 时,存储中的所有数据都会消失。

我想保持登录阶段,即使用户刷新页面,只要 CognitoUserSession 有效,并且可能保留我在商店中已有的一些数据。

实现这一点的最佳方法是什么?

【问题讨论】:

    标签: javascript reactjs amazon-web-services redux aws-amplify


    【解决方案1】:

    aws-amplify 大量使用localStorage。你也可以。

    你也可以使用sessionStorage,除了窗口关闭后所有的东西都被删除之外,它是一样的。

    如果你想保存一些东西:

    window.localStorage.setItem(“itemKey”, “itemString”);
    

    要取回它:

    const item = window.localStorage.getItem(“itemKey”);
    

    请注意:如果你想保存一个对象,你需要 JSON.stringify 它,然后在检索它时 JSON.parse 它。您只能存储字符串。

    作为一般规则,我不会将敏感信息存储在 localStorage 上。

    另外,我倾向于在某些组件安装或更新时对其进行某种会话检查。例如,您可以添加:

    if (!this.props.session) { // stored session object in redux
      Auth.currentSession().then((session) => {
        handleSession({ session }); // redux action to store session
      });
    }
    

    想法是:如果页面刷新,带有这些会话检查的组件将挂载,运行上面的 if 语句,实现会话为空,并尝试从 Auth 中检索新的会话对象。如果 Auth 由于用户不再经过身份验证而返回错误,您可以添加额外的逻辑来重定向到您的登录屏幕。

    【讨论】:

    猜你喜欢
    • 2017-12-06
    • 2017-10-16
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    相关资源
    最近更新 更多