Эта документация была автоматически переведена ИИ.
ACL
ACL (Access Control List) используется для контроля прав доступа к операциям с ресурсами. Вы можете назначать права ролям или напрямую ограничивать их, минуя ролевые ограничения. Система ACL предлагает гибкий механизм управления правами, поддерживающий фрагменты прав (snippets), промежуточное ПО (middleware), условные проверки и другие методы.
Объекты ACL принадлежат к источнику данных (dataSource.acl). К ACL основного источника данных можно быстро получить доступ через app.acl. Подробнее об использовании ACL для других источников данных см. в главе Управление источниками данных.
Регистрация фрагментов прав (Snippet)
Фрагменты прав (snippets) позволяют регистрировать часто используемые комбинации прав в качестве многократно используемых единиц. После привязки роли к фрагменту она получает соответствующий набор прав, что сокращает дублирование настроек и повышает эффективность управления правами.
Права, минующие ролевые ограничения (allow)
acl.allow() используется для разрешения определенных операций в обход ролевых ограничений. Это подходит для публичных API, сценариев с динамической оценкой прав или случаев, когда проверка прав должна основываться на контексте запроса.
Описание параметра condition:
'public': Доступно любому пользователю (включая неавторизованных), без какой-либо аутентификации.'loggedIn': Доступно только авторизованным пользователям, требуется действительная учетная запись.(ctx) => Promise<boolean>или(ctx) => boolean: Пользовательская функция, которая динамически определяет, разрешен ли доступ, на основе контекста запроса. Позволяет реализовать сложную логику прав.
Регистрация промежуточного ПО для прав (use)
acl.use() используется для регистрации пользовательского промежуточного ПО для прав, что позволяет вставлять собственную логику в процесс проверки прав. Обычно используется в сочетании с ctx.permission для определения пользовательских правил прав. Подходит для сценариев, требующих нестандартного контроля прав, например, для публичных форм, где нужна пользовательская проверка пароля, или для динамической оценки прав на основе параметров запроса.
Типичные сценарии использования:
- Сценарии публичных форм: нет пользователя, нет роли, но права должны быть ограничены с помощью пользовательского пароля.
- Контроль прав на основе параметров запроса, IP-адресов и других условий.
- Пользовательские правила прав, позволяющие пропустить или изменить стандартный процесс проверки прав.
Управление правами через ctx.permission:
Описание свойств ctx.permission:
skip: true: Пропускает последующие проверки прав ACL и напрямую разрешает доступ.- Может быть динамически установлено в промежуточном ПО на основе пользовательской логики для обеспечения гибкого контроля прав.
Добавление фиксированных ограничений данных для определенных операций (addFixedParams)
addFixedParams позволяет добавлять фиксированные ограничения по диапазону данных (фильтр) для операций с определенными ресурсами. Эти ограничения применяются напрямую, минуя ролевые ограничения, и обычно используются для защиты критически важных системных данных.
Совет:
addFixedParamsможно использовать для предотвращения случайного удаления или изменения конфиденциальных данных, таких как встроенные системные роли, учетные записи администраторов и т.д. Эти ограничения действуют в сочетании с ролевыми правами, гарантируя, что даже при наличии прав защищенные данные не могут быть изменены.
Проверка прав (can)
acl.can() используется для проверки наличия у определенной роли прав на выполнение указанной операции, возвращая объект с результатом проверки или null. Часто используется для динамической проверки прав в бизнес-логике, например, в промежуточном ПО или обработчиках операций, чтобы определить, разрешено ли выполнение определенных действий на основе ролей.
Совет: Если передано несколько ролей, каждая роль будет проверена последовательно, и будет возвращен результат для первой роли, обладающей необходимыми правами.
Определения типов:

