Реагировать на основе авторизации в сочетании с маршрутизацией на бизнес-уровне - PullRequest
0 голосов
/ 17 января 2020

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

  • publi c, например, логин / регистрация и т. Д. c.
  • частных маршрутов, которые включают некоторые определенные c маршрутизации на основе бизнес-требований.
  • заблокированных маршрутов на основе роли пользователя и авторизации.

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

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

С разрешениями я рассмотрел несколько различных методов, я рассмотрел путь маршрутизатора / аутентификации, а также метод, называемый Способность , другими словами, роли пользователя определены в конфигурации, но могут содержать удобные для человека такие операторы, как:

can("view", "Proposal")

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

<Can I="create" a="Post" ability={ability}>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...