Я клонировал 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 на стороне клиента.