RBAC в React, как реализовать концепцию? - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно реализовать RBAC в приложении React.Я прочитал статью - https://auth0.com/blog/role-based-access-control-rbac-and-react-apps/ - и понял, как это делается, но одну вещь, которую я не понял, это как автоматизировать сбор информации обо всех защищенных действиях для редактирования ролей (добавить эти разрешения и удалить)?

Я понял: есть какое-то защищенное действие, я завернул его в какой-то HOC и проверил, видит ли его пользователь или нет.Теперь давайте посмотрим на это с другой точки зрения.Мне нужно иметь возможность настраивать роли.Я открываю редактор, создаю имя для роли и хочу добавить некоторые разрешения для пользователя.Я должен выбрать их где-нибудь, поэтому список (журнал, таблица - как вы хотите) всех действий, для которых я хочу реализовать RBAC, становится моим центром Вселенной.Так что каждый раз, когда мне нужна защищенная кнопка (маршрут), я должен добавить ее идентификатор в некоторый список.Это сложное, ненужное действие.Какой механизм я могу использовать, чтобы избежать использования списка действий, описанных выше?

Мои мысли таковы: Для защищенных компонентов я добавляю к их имени некоторый постфикс -sec (Component-sec.js).Внутри них я создаю свойства со своим именем и описанием.Затем на странице администратора я показываю все разрешения, которые являются компонентами с постфиксами (анализируя их имена, КАК? Я никогда не использовал отражение в JS), и показываю их имена и описания (свойства name и description).Это об автоматизации в настройке.Если говорить о разрешении и отказе в работе, здесь я могу использовать некоторый HOC (AuthComponent), где я могу проверить разрешение.

class MyComponent extends AuthComponent {}
class AuthComponent extends React.component {}

Что вы думаете об этом?Может быть, есть более эффективные способы сбора и обработки разрешений?

1 Ответ

1 голос
/ 25 июня 2019

Входной авторизации недостаточно. Вам также необходима авторизация на стороне сервера, чтобы злоумышленники не могли обойти ваш интерфейс. Хорошей практикой является то, что вы используете абсолютно одинаковую технику для аутентификации переднего плана и аутентификации на заднем плане. Я рекомендую использовать Casbin , так как он поддерживает интерфейсные JS и внутренние языки, такие как Go, Java, Node.js, Python. Таким образом, вам не нужно использовать разные механизмы доступа для внешнего интерфейса и внутреннего интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...