До сих пор я имел дело только с приложениями с сервером, где после входа пользователя в систему через имя пользователя/пароль или с помощью поставщика OAuth (Facebook и т. Д.) Сервер просто устанавливает cookie сеанса при перенаправлении на соответствующую страницу.Как обеспечить интерфейс с помощью веб-маркера JSON после аутентификации сервера?
Однако теперь я пытаюсь создать приложение, используя более «современный» подход, с React на интерфейсе и бэкэндом JSON API. По-видимому, стандартным выбором для этого является использование веб-маркера JSON для аутентификации, однако у меня возникли проблемы с разработкой того, как я должен предоставлять JWT клиенту, чтобы он мог храниться в сеансовом/локальном хранилище или где угодно.
Пример для иллюстрации лучше:
Пользователь нажимает ссылку (
/auth/facebook
), чтобы войти с помощью Facebookпользователя перенаправляется и показаны Facebook входа в форму и/или диалог разрешения (при необходимости)
Facebook перенаправляет пользователя обратно на
/auth/facebook/callback
с кодом авторизации на буксире, сервер обменивает это на токен доступа и некоторая информация о пользователеСервер находит или создает пользователя в БД с использованием информации, затем создает JWT, содержащий соответствующее подмножество пользовательских данных (например, ID)
???
На данный момент я просто хочу, пользователь будет перенаправлен на главную страницу для React приложения (скажем /app
) с JWT на буксире, так что интерфейс может взять на себя. Но я не могу придумать (элегантный) способ сделать это, не потеряв JWT на этом пути, кроме как поместить его в строку запроса для перенаправления (/app?authtoken=...
) - но это будет отображаться в адресной строке, пока я не удалю он вручную использует replaceState()
или что-то еще, и мне кажется немного странным.
Действительно, мне просто интересно, как это обычно делается, и я почти уверен, что здесь что-то отсутствует. Сервер - это Node (Koa с паспортом), если это помогает.
Редактировать: Чтобы быть ясным, я спрашиваю, что лучший способ предоставить токен клиенту (чтобы он мог быть сохранен) после перенаправления OAuth с использованием паспорта.
Вы узнали ответ? Я пытаюсь найти ответ на эту проблему, но я не могу найти полезной информации. – Mariusz