Итак, я в основном пытаюсь установить токен в своем локальном хранилище. Я делаю запрос к своему API в PHP, и это код:
login() {
const body = JSON.stringify({
"usuario":"juanma",
"password":"1234"});
console.info(body);
const params = new HttpParams();
const headers = new HttpHeaders();
this.http.post<AuthResponse>("http://localhost:8000/login", body, {'headers':headers,'params':params})
.subscribe(data => localStorage.setItem('token', data.token.toString()));
}
Я действительно получаю токен, я даже вижу его в console.info (сейчас не отображается в коде, но я попробовал, и он появился).
AuthResponse — это созданная мной модель, которая воспроизводит возврат JSON из метода post.
Однако я не могу установить токен как строку в localStorage, и я получаю следующее:
Я действительно потерян с этим. Если кто поможет, буду благодарен!
Обновлено: добавлен скриншот console.info(data.token) внутри подписки:
Обновлено еще раз: Теперь я правильно понял токен! Проблема в том, что мне нужно сделать метод 2 раза, чтобы заставить его работать.
Как видите, в первый раз, когда я создал этот метод, он дает значение «неопределенное».
Вам просто нужно заменить data.token.toString()
на data.token.token
login() {
const body = JSON.stringify({
"usuario":"juanma",
"password":"1234"});
console.info(body);
const params = new HttpParams();
const headers = new HttpHeaders();
this.http.post<AuthResponse>("http://localhost:8000/login", body, {'headers':headers,'params':params})
.subscribe(data => localStorage.setItem('token', data.token.token));
}
Я работаю! Однако вместо установки только значения токена он устанавливает все JSON. Вместо этого (что я получаю сейчас): {"токен":"...."} Мне нужно получить это: (значение токена)
Я обновил свой ответ, тогда вам должно быть хорошо с data.token
Та же ошибка, что и в вопросе. Для localStorage установлено значение «[object Object]».
Покажите console.info(data.token) внутри подписки, пожалуйста
Добавлен скриншот console.info(data.token)
Я снова обновил свой ответ на основе вашего console.info, вам нужно установить data.token.token
Сработало, но мне нужно сделать это 2 раза, чтобы установить значение. Есть идеи, как это исправить?
Что нужно сделать 2 раза? Пожалуйста, дополните
Означает, что мне нужно щелкнуть кнопку входа в мой HTML, чтобы он работал. В первый раз он дает неопределенную вещь, а во второй раз дает правильный токен. Вы можете увидеть это, как указано в журнале консоли на новом скриншоте.
Это не имеет ничего общего с localStorage, а скорее с вашим API. Вы уверены, что получите ответ с первого раза?
Давайте продолжим обсуждение в чате.
А для http.post вам не нужен JSON.stringify. Вы можете добавить объект JSON напрямую