簡體   English   中英

AWS放大了如何使用Redux在React應用上實現currrentSession?

[英]AWS amplify how to implement currrentSession on a React app with Redux?

AWS Amplify文檔顯示

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解析。 您只能存儲字符串。

通常,我不會在localStorage上存儲敏感信息。

另外,我傾向於在安裝或更新某些組件時對它們進行某種形式的會話檢查。 例如,您可以添加:

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

這個想法是:如果頁面刷新,將安裝具有這些會話檢查的組件,運行上面的if語句,意識到會話為空,然后嘗試從Auth檢索新的會話對象。 如果由於用戶不再經過身份驗證而Auth返回錯誤,則可以添加其他邏輯以重定向到登錄屏幕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM