В настоящее время у меня возникают проблемы с разрешениями и блокировками с помощью пользовательского интерфейса React Webapp, и мне было интересно, может ли кто-нибудь помочь. В настоящее время мы используем маршрутизацию приложения, которая обрабатывает три разные формы.
- publi c, например, логин / регистрация и т. Д. c.
- частных маршрутов, которые включают некоторые определенные c маршрутизации на основе бизнес-требований.
- заблокированных маршрутов на основе роли пользователя и авторизации.
Все это требует прохождения через маршрутизатор и проверки подлинности, которые могут вызвать конечную точку для получения необходимой информации. Проблема в том, что требуемые значения не исходят из одной конечной точки. Если я хотел бы назвать только одну конечную точку, уровень завершенности будет создаваться в разных микросервисах на бэкэнде, что недопустимо. Если я хочу вызвать разные конечные точки, это может привести к задержке загрузки страницы и будет видно конечному пользователю в случае медленного соединения (сначала перенаправляется на другой компонент, а затем перенаправляется на заблокированную страницу).
Я использую Rest API, поэтому он не похож на Graph API, где я могу отправлять несколько запросов за один вызов. В качестве альтернативы я могу поместить прокси или шлюз API между ними, чтобы полагаться только на один вызов, но я полагаю, что должен быть более чистый способ обработки в React напрямую, а не полагаться на решения на операционном уровне.
С разрешениями я рассмотрел несколько различных методов, я рассмотрел путь маршрутизатора / аутентификации, а также метод, называемый Способность , другими словами, роли пользователя определены в конфигурации, но могут содержать удобные для человека такие операторы, как:
can("view", "Proposal")
, который затем используется во всем приложении для ограничения разрешений на маршрутизацию и представления на основе компонентов, а также
<Can I="create" a="Post" ability={ability}>