Разрешение на обработку в сокращении

Использование стека node -redux. У нас есть создатели действий на стороне клиента и редукторы + сокращение на заднем конце. У меня есть следующее предложение для реализации разрешений:

  • Действия создаются на стороне клиента, они могут быть вредоносными даже от пользователей, прошедших проверку подлинности.
  • Действия отправляются на сервер.
  • Запрос аутентифицирован на стороне сервера и установлены разрешения пользователей.
  • Действия проходят через промежуточное программное обеспечение redux, которое находится внутри сервера node.
  • Middleware проверяет права пользователей на разрешение, указанное для типа действия.
  • Если у пользователя есть правильные разрешения для действия, то редукторы создают новое состояние сокращения (которое также живет на сервере).


Проблема:

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

Вопросы:

Есть ли хороший ресурс/ссылка с хорошим обсуждением прав на обработку с помощью сокращения. Достаточно ли сокращения для обработки сложных разрешений? Если мы проверим разрешения, описанные выше, есть ли какие-либо проблемы, о которых я не упомянул, и есть ли лучший способ приблизиться к этому, все еще используя сокращение?

Ответ 1

Redux является "агностиком разрешения". Redux - это всего лишь основа для координации действий, которые обновляют состояние приложения; он не содержит никаких мнений или рекомендаций о том, как подходить к разрешению этих действий.

Ответы

Есть ли хороший ресурс/ссылка с хорошим обсуждением разрешений на обработку с помощью перевождь.

Вот один из.

Авторизация - очень сложная вещь, чтобы делать общие прокламации, поскольку это очень зависит от потребностей бизнеса. Вы используете роли? Вам просто требуется аутентификация? Могут ли пользователи иметь несколько ролей или только одну? Как взаимодействовать несколько ролей? Это не вопросы с одним ответом.

Достаточно ли справки для обработки сложных разрешений?

Это похоже на вопрос, достаточно ли JavaScript для обработки сложных разрешений. Это действительно не имеет смысла.

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

С другой стороны, редукция предоставляет готовый механизм, который может обрабатывать сложные разрешения без каких-либо дополнительных шаблонов или инструментов: no. Redux даже не пытается решить эту проблему, это зависит только от вас.

Если мы проверим разрешения, описанные выше, есть ли какие-либо проблемы, о которых я не упомянул, и есть ли лучший способ приблизиться к этому при использовании сокращения?

Есть, безусловно, проблемы, о которых вы не упомянули, поскольку вы не полностью описали свою реализацию. Как говорится, дьявол в деталях. Как вы достигнете того, что вы описали, определите, какие другие проблемы вы столкнулись.

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

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

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

  • Задержка. Redux ожидает полного состояния приложения, включая значение полей ввода. Ваша модель проверяет сервер на каждом действии, поэтому при малейшем сокращении каждый шаг нажатия клавиши переходит на сервер, чтобы обеспечить возможность обновления ввода. Это сделает взаимодействие пользователя очень медленным и очень расстраивающим.
  • Bandwidth. Это будет потреблять большую полосу пропускания по причине, как указано выше.
  • CPU. По этой причине это будет очень интенсивным сервером.

Большая победа в клиентских приложениях заключается в том, что сервер выполняет только ту работу, в которой она абсолютно необходима: обслуживание данных (в минимальном формате, например json), и проверка запросов на обновление данных. Вы собираетесь использовать дополнительную работу для всех ваших клиентов. Это сомнительный компромисс к сокращению котельной пластины записи REST api.

Это также заблокирует вас в вашем действии api и redux. Преимущество REST api заключается в том, что клиент-агностик. Если вы измените с redux или просто реорганизовываете свои действия, REST api на сервере не потребуется изменять (или, по крайней мере, не нужно менять столько же). Это будет делать рефакторинг, даже если вы придерживаетесь сокращения, больно. Независимо от того, преодолевает ли это боль при написании REST api, невозможно сказать, но его следует рассмотреть.