将我的API令牌存储在本地存储中是将令牌用双引号引起来

时间:2018-12-20 16:39:48

标签: javascript reactjs

当我的API返回会话令牌时,我使用以下函数将其保存在本地存储中:

export const storeItem = (key: string, item: any) => {
  if (!localStorage) return;

  try {
    return localStorage.setItem(key, JSON.stringify(item));
  } catch (err) {
    console.error(`Error storing item ${key} to localStoragee`, err);
  }
};

我呼唤我的React Redux动作:

storeItem('authToken', resp.data.token);

更奇怪的是,当令牌保存在我的本地存储中并在chrome开发工具中查看时,令牌用双引号引起来,例如:

"abc123"

然后,当我在查询字符串中将此令牌传递给我的API时,它看起来像:

token="abc"

(但双引号使用%22编码)

为什么会发生这种情况?我该如何删除引号?

更新 我正在建立这样的查询字符串:

let authToken = localStorage.getItem('authToken');
let url = API_ROOT + '/sessions/destroy?token=' + authToken;


export const getItemFromStorage = (key: string) => {
  if (!localStorage) return;

  try {
    return JSON.parse(localStorage.getItem(key));
  } catch (err) {
    console.error(`Error getting item ${key} from localStorage`, err);
  }
};

1 个答案:

答案 0 :(得分:4)

您要字符串化为JSON(其中会添加"),而不是解析。

读取localStorage时,您应该解析(但是看起来没用)。或者只是存储字符串而不将其编码为JSON。