169 похожих чатов

Всем привет, нужна помощь! Допустим есть состояние User state: {

user: { // default user state
id: 1,
email: "null",
name: "null",
},
},
getters: {
getUserId(state) {
return state.user.id;
},
getUserEmail(state) {
return state.user.email;
},
getUserName(state) {
return state.user.name;
},
},
mutations: {
setUser(state, user) {
state.user = user;
},
},
actions: {
fetchUser({ commit }) {
api
.get("api/user/profile")
.then((response) => {
console.log(response.data);
commit("setUser", response.data); // <- работает, а вот JSON.parse(response.data) - нет
})
.catch((err) => {
console.log(err);
});
},
},

Вопросы:
1. После успешной авторизации backend в ответ кидает json, который содержит информацию о пользователе:
{
"id": 1,
"email": "admin@test.ru",
"name": "ADMIN",
"roles": [
{
"id": 1,
"name": "ROLE_USER",
"description": "User role",
"authority": "ROLE_USER"
},
{
"id": 2,
"name": "ROLE_ADMIN",
"description": "Admin role",
"authority": "ROLE_ADMIN"
}
]
}
Я пытаюсь её спарсить JSON.parse и присвоить состоянию в действии fetchUser, но получаю ошибку.
SyntaxError: "[object Object]" is not valid JSON
at JSON.parse (<anonymous>)
at eval (userModule.js:35:1)
Но если я не буду этого делать(не буду вручную парсить, то всё работает как надо), почему так?

2. Как правильно занулить состояние user, например при logout?
При попытке это сделать так:
async logout() {
this.setUser(null);
//todo: redirect to home page?
await logout(); // call api backend
},
после выполнении кода выше и попытки перейти на страницу профиля я получаю ошибку:
Cannot read properties of null (reading 'name')
TypeError: Cannot read properties of null (reading 'name')
at getUserName
ну как я понял пользователь занулился с концами. Как в таком случае его правильно занулять?
===============
UPD: Точнее как правильно пользователя занулять и понимать, что нельзя пускать его на определённую страницу раз он не авторизован?

3 ответов

10 просмотров

ты хочешь, чтобы фронт знал, авторизован пользователь или нет, без опроса бека?

Prototype- Автор вопроса
Павел Якупов
ты хочешь, чтобы фронт знал, авторизован пользоват...

честно говоря не знаю как правильно в данной ситуации сделать, по идее да, если в состоянии есть пользователь то хотя бы так считать что пользователь авторизован

у тебя уже там объект, а не json-строка

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта