@verygoodboy

Какой алгоритм получения ролей и прав пользователя на фронт vue или react и как их хранить?

Всем привет. Объясните, пожалуйста, на пальцах, алгоритм получения ролей и прав пользователя на фронте?
Как и когда их получать, где хранить? Нужно ли получать все существующие права и роли из бекенда + роли и права конкретного пользователя? Нужно ли использовать стейт менеджмент для хранения?
Мне не нужен готовый код, просто опишите саму суть процесса.
Спасибо!
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@MaxRyazan
Если у вас на проекте jwt авторизация, то логично роли записывать в токен. Это работает так:
пользователь вводит пароль и логин, на бэке, если все совпадает формируется токен-строка, в которую в payload можно положить роли.
Затем, на фронте написать interceptors, которые будут проверять токен на валидность, и в том числе, парсить роли записывать их в вашу сущность user. (юзера можно хранить в сторе, или просто в js/ts файле в виде реактивного объекта, в случае vue3. У вью мощная реактивность)

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

Так же, помимо ролей есть система, называемая permissions - пермишны.
Это когда внутри ролей есть еще подкатегории - например, сущность админ может быть нескольких видов - с правом редактирования, удаления, добавления контента, либо же, просто с правом удаления, без права редактирования.

Вот эти доп. условия - удаление, редактирование и тп - это и есть пермишны. Я описал пример. Система может быть разной.

Другой вариант - создать простой роут, скажем getCurrentUser, который будет возвращать текущего пользователя, вместе со всеми ролями. И дёргать роут по мере надобности - скажем, при обновлении access токена.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
It depends.
Всё зависит от реализации вашей системы. Нужно ли вообще фронту знать о правах пользователя?
Бэк может авторизовать пользователя при каждом запросе, может сохранить права в сессии, может записать их в JWT. В последнем случае права автоматически будут видны фронту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы