AWS 放大了如何使用 Redux 在 React 应用程序上实现 currrentSession?



AWS 放大文档显示

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

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

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

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

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

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

您还可以使用sessionStorage,这是相同的,只是在窗口关闭后删除所有内容。

如果要保存某些内容:

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

要找回它:

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

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

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

此外,我倾向于在某些组件挂载或更新时对它们运行某种会话检查。例如,您可以添加:

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

这个想法是:如果页面刷新,具有这些会话检查的组件将挂载,运行上面的 if 语句,意识到会话为空,并尝试从 Auth 检索新的会话对象。如果 Auth 由于用户不再进行身份验证而返回错误,则可以添加其他逻辑以重定向到登录屏幕。

相关内容

最新更新