@Renhor

Как в Nuxt правильно получить данные пользователя по jwt токену?

Создал такой роут:

// /api/auth/getUserByToken
router.post(
  '/getUserByToken',
  passport.authenticate('jwt'),
  (req, res) => {
    res.json({
      username: req.user.username,
      email: req.user.email,
      id: req.user.id
    });
  }
);

Думал его диспатчить в nuxtServerInit:

nuxtServerInit({ dispatch }) {
    dispatch('auth/autoSignin');
    dispatch('auth/getUserByToken');
}

AutoSign просто проверяет куки браузера и достает оттуда токен, поэтому это спокойно вносится во Vuex.
getUserByToken делает запрос на вышеуказанный роут, получает пользователя, через мутации коммитит, но пользователь в state не сохраняется.

setUser(state, user) {
    console.log(user); // Нужная информация пришла
    state.user = user;
    console.log(state.user); // Стейт обновился, но на клиенте не появился
  },

Почему так - я примерно понял, вопрос в том, как сделать правильно и чтобы работало?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
@Renhor Автор вопроса
Добавил здесь оператор async/await - и все стало работать.

async nuxtServerInit({ dispatch }) {
    dispatch('auth/autoSignin');
    await dispatch('auth/getUserByToken');
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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