Как правильно проверить аутентификацию с помощью Vue.js (Vue router) и Django

Я пытаюсь проверить, аутентифицирован ли пользователь на защищенных маршрутах в vue-router. У меня есть Django rest framework, который устанавливает sessionid при входе в систему.

Я видел людей, использующих vuex или local storage для хранения информации о сессии. Но, если токен был принудительно просрочен на стороне сервера, пользователю будет разрешена навигация, поскольку localStorage все еще говорит IsAuthenticated=true. В этом случае лучше всего сделать запрос к бэкенду Django, например fetch("url/auth/authenticated")?

Пожалуйста, рассмотрите возможность добавления защиты маршрутизации на защищенных маршрутах.

Vue Router позволяет выполнять действия перед входом в любой маршрут.

<<<Следующие

документы помогут вам в этом. Помните, что ответ API - это то, что управляет вашим фронт-эндом. Поэтому для проверки того, что sessionid все еще действителен, вы можете создать конечную точку для этого, и когда она отвечает с истекшим состоянием, ваш фронтенд должен удалить все связанное с сессией в вашем vuex store и из локального хранилища, а затем перенаправить пользователя на страницу подключения!

Это зависит от конкретного случая использования и требований.

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

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

Другой подход заключается в использовании JSON Web Tokens (JWT) для аутентификации. JWT - это самодостаточные маркеры, которые содержат всю информацию, необходимую для аутентификации пользователя, и могут быть проверены на стороне клиента без необходимости дополнительного сетевого запроса. Однако JWT имеют короткий срок действия, и их необходимо регулярно обновлять.

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

Вернуться на верх