Приложение без сохранения состояния - как узнать, авторизован ли пользователь для показа страницы

Допустим, у меня есть приложение React с Spring REST API, и я использую аутентификацию на основе токенов. Теперь допустим, что я также использую React-Router для навигации.

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

Что я планирую сделать, так это спрашивать мой сервер (делать запрос на получение) при каждом изменении страницы, аутентифицирован ли пользователь, а затем предоставлять соответствующие данные. Если нет, перенаправить на логин

Я считаю, что это правильный способ сделать это, чтобы быть уверенным, что мой пользователь аутентифицирован для просмотра страницы, но есть ли что-то лучше? Боюсь, если звонок на каждую страницу тяжелый. Как другие API без сохранения состояния обрабатывают этот случай?

Заранее спасибо!

2 ответа

Я сделал это с помощью бэкэнда Laravel и внешнего интерфейса VueJS. Немного отличается от React, но я думаю, что то же самое.

я использовал JWT (JSON Web Token) и создайте API входа в систему. если пользователь вошел в систему через API входа, выдайте токен и ответьте пользователю. Тогда ваша инфраструктура внешнего интерфейса должна хранить токен в Cookie или локальном хранилище.

Когда ваше приложение хочет получить данные из API, каждый раз добавляйте токен в заголовок запроса. Вы можете расшифровать токен из промежуточного ПО бэкэнда как вошедший в систему пользователь или нет.

Хорошо это как JWT и бэкэнд работа. Возвращаясь к вашему вопросу, вы можете легко сохранить токен и использовать его повторно в качестве идентификатора пользователя, пока токен не истек.

После открытия страницы веб-интерфейса отправьте запрос API-интерфейсу сервера, чтобы получить полное имя пользователя, имя учетной записи или все, что вам нужно для рендеринга страницы хотя бы один раз. (Вместо этого, если вы уже сохранили это в локальном хранилище, просто покажите его.)

Из-за сохранения токена вы будете знать, вошел ли пользователь в систему или нет. Таким образом, вы можете обрабатывать некоторые личные страницы только для членов из маршрута инфраструктуры внешнего интерфейса. Но только для улучшения пользовательского опыта. Проверьте токен и идентификацию пользователя перед поиском и возвратом конфиденциальных данных.

Храните токен либо в локальном хранилище, либо в хранилище сеансов. Таким образом, вам нужно сделать только один начальный вызов серверу авторизации. https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

Другие вопросы по тегам