Неверные данные в localStorage

88
03 марта 2022, 08:00

У меня есть файл с авторизацией пользователя, при логине я получаю токен в localStorage. С этим все в порядке.

import saveToken from '../token';
import performRequest from '../requests';
export default function loginRequest(email, password) {
  return performRequest(`/api/login?password=${password}&userName=${email}`, {
    method: 'POST',
  })
    .then((response) => response.text())
    .then(saveToken);
}

Но когда я регистрирую нового пользователя, то вместо токена в tokenData сохраняется "{\"id\":60}" (цифра не обязательно такая, она меняется после каждой регистрации)

sendIdRequest(id, email, password) {
    return performRequest(`/api/users/${id}/creds`, {
        method: 'POST',
        body: JSON.stringify({
          password: password,
          userName: email,
        }),
        headers: {
          'Content-Type': 'application/json;charset=utf-8',
        },
      })
      .then((response) => response.text())
      .then(saveToken)
  }

Сам saveToken

export default function saveToken(token) {
  localStorage.setItem('tokenData', JSON.stringify(token));
}

Мне нужно, чтобы после регистрации в localStorage сохранялся сам токен, оценю любую вашу помощь.

Answer 1

Похоже, вам по-разному приходят данные с сервера при логине и регистрации - в первом случае только число, во втором - объект с полем id. Для сохранения токена после регистрации нужна функция типа такой:

function saveRegistrationToken(token) {
  localStorage.setItem('tokenData', JSON.parse(token).id);
}

В вашей фукнции saveToken используется JSON.stringify, (а не JSON.parse) поэтому получается неожиданный результат.

READ ALSO
Как сделать мультиязычный лендинг?

Как сделать мультиязычный лендинг?

Подскажите, как реализовать мультиязычный лендинг?

86
Uncaught TypeError: Cannot read property 'value' of undefined

Uncaught TypeError: Cannot read property 'value' of undefined

Есть функция, которая записывает полученные с формы html документа значения в переменные а и b, в ней на 47й строке консоль выдает ошибку "Uncaught...

158
WebSoket и Promise || Иммитация Ajax

WebSoket и Promise || Иммитация Ajax

Решил отказаться от Ajax и все взаимодействие с сервером провожу через вебсокеты

81