首页 > 解决方案 > 重定向到新的外部 url 时如何保留 localStorage

问题描述

我面临一个问题,我无法跨重定向保存 localStorage。这是我的代码:

// Call newSitelogin(). Set response(credentials) to localStorage. Redirect to new url.
newSitelogin({ uuid, password })
  .then(() => {
    window.open(process.env.NEW_SITE_URL); // This line clears localStorage.
  })
  .catch(() => replaceRouteWith('/'));

端点调用 api 并在 localStorage 中设置响应

newSitelogin(payload) {
  return yield put.resolve({
      [RSAA]: {
        endpoint: `/auth/hubv3-login`,
        method: 'POST',
        body: JSON.stringify(payload),
        types: [
          ACTION.LOGIN_REQUEST_PERFORM,
          {
            type: ACTION.LOGIN_REQUEST_SUCCESS,
            payload: (action, state, res) =>
              getJSON(res).then(json => localStorage.setItem('credentials', JSON.stringify(json))), // setting response to localStorage.
          },
          ACTION.LOGIN_REQUEST_FAILURE,
        ],
      },
  });
};

我可以看到凭据正确存储在我的应用程序的 localStorage 中: 在此处输入图像描述

但是当我使用重定向到新的 url 时,它们不会被保留window.open(process.env.NEW_SITE_URL)

在此处输入图像描述

credentials重定向到新的 url 时,如何确保对象被保留?由于我要重定向到的应用程序中编写的逻辑,我无法使用会话和 cookie。它只credentials在 localStorage 中查找。

标签: javascriptreactjsgoogle-chromelocal-storageredux-saga

解决方案


我过去曾遇到过这个问题。localStorage 仅保留每个网站。我所做的是我在 cookie 中附加了用户凭据。


推荐阅读