Рекомендации по синхронизации состояния vuex на стороне клиента с состоянием на стороне сервера? - PullRequest
1 голос
/ 22 июня 2019

Я клонировал vue-hackernews-2.0 , приложение Vue.js с SSR и vuex.

Это приложение прослушивает порт 8080 , в то время как мой сервер api прослушивает 3000 в моей локальной среде разработчика. Я пытаюсь реализовать аутентификацию пользователя в нем, используя jwt.

когда клиент получает токен с сервера api, состояние клиента обновляется токеном, но Как мне сообщить состоянию на стороне сервера, что пользователь вошел в систему ?

В общем, как синхронизировать состояние на стороне клиента и на стороне сервера?

Уродливый хак, о котором я подумал, заключается в том, что когда пользователь входит в систему с правильными учетными данными, сервер API должен открыть соединение через сокет с сервером 8080 и инициировать обновление состояния на стороне сервера? Это приемлемое / масштабируемое решение? Каковы лучшие практики в этом отношении?

БОЛЬШЕ ДЕТАЛЕЙ .. (а) в роутере я реализовал навигационную охрану:

      ....
      if (router.app.$store.getters.isLoggedIn)  next()
      else  next('/login')
      ...

Теперь при входе в систему на моей странице входа в систему я публикую действие на своем сервере api (НЕ на сервере vue на порту 8080) и сохраняю токен в состоянии на стороне клиента. Но когда я перезагружаю зарегистрированную страницу панели мониторинга, он не может найти токен на стороне сервера, функция isLoggedIn выше возвращает false и пытается отобразить страницу входа , см. Код выше Таким образом, DOM на стороне клиента не соответствует странице, отображаемой на сервере, и клиент пытается перерисовать DOM на стороне клиента.

...