【问题标题】:localstorage returning 'undefined' in react-redux app on page refreshlocalstorage 在页面刷新时在 react-redux 应用程序中返回“未定义”
【发布时间】:2020-08-25 09:50:50
【问题描述】:

我正在使用 react-redux 应用程序并尝试将我的身份验证令牌存储在本地存储中。一旦我的登录 api 调用完成,我将 auth-token 放入 localStorage,如下所示:

function loginSuccess(response) {
  const { accessToken, refreshToken} = response;
  localStorage.setItem('accessToken', accessToken);
  localStorage.setItem('refreshToken', refreshToken);
}

当我重新加载网页时,在我的 App.js 中,当我尝试检索 accessToken 和 refreshToken 时,都返回“未定义”。这是为什么呢?

class App extends React.Component {
  constructor(props) {
    super(props);    ;
    if (localStorage.getItem('accessToken')) {
      authenticationActions.resetHeader();
    }
  }

【问题讨论】:

  • 我要警告你localStorage 是不安全的。在localStorage 中放置一个刷新令牌(甚至是访问令牌)是一个非常糟糕的主意。另外,您使用 JWT 标记了问题,所以我假设您也将这些问题保存在 localStorage 中,这也非常危险:medium.com/redteam/…
  • 我怀疑您的问题是response 对象不包含值accessTokenrefreshToken。如果它是一个Response 对象(即来自 Fetch API),那么您需要等待response.json() Promise 解析,它将包含数据。
  • 我在执行 localstorage.getItem('accessToken') 的地方放了断点,发现等待一段时间后,返回值。看起来它需要一些时间。这是常见的行为吗?

标签: reactjs jwt local-storage


【解决方案1】:

通常,如果您处于隐身模式,就会发生这种情况。失败...使用调试器并确保accessTokenrefreshToken 不是undefined。如果刷新失败,loginSuccess 函数正在运行,debugger 再次是你的朋友。

【讨论】:

猜你喜欢
  • 2020-04-27
  • 1970-01-01
  • 2021-11-18
  • 2022-01-11
  • 2017-12-22
  • 2021-08-01
  • 2023-02-22
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多