Esta documentação foi traduzida automaticamente por IA.
ACL (Access Control List) é usado para controlar as permissões de operação de recursos. Você pode conceder permissões a funções, ou ignorar as restrições de função e definir permissões diretamente. O sistema ACL oferece um mecanismo flexível de gerenciamento de permissões, suportando fragmentos de permissão (snippets), middlewares, avaliação condicional e outros métodos.
Objetos ACL pertencem às fontes de dados (dataSource.acl). O ACL da fonte de dados principal pode ser acessado rapidamente via app.acl. Para o uso de ACLs de outras fontes de dados, consulte o capítulo Gerenciamento de Fontes de Dados.
Fragmentos de permissão (Snippets) permitem registrar combinações de permissões comuns como unidades reutilizáveis. Depois que uma função é vinculada a um snippet, ela obtém o conjunto correspondente de permissões, o que reduz a configuração duplicada e melhora a eficiência do gerenciamento de permissões.
acl.allow() é usado para permitir que certas operações ignorem as restrições de função. Isso é útil para APIs públicas, cenários que exigem avaliação dinâmica de permissões ou casos em que o julgamento de permissão precisa ser baseado no contexto da requisição.
Descrição do parâmetro condition:
'public':Qualquer usuário (incluindo usuários não autenticados) pode acessar, sem necessidade de autenticação.'loggedIn':Apenas usuários logados podem acessar, requer uma identidade de usuário válida.(ctx) => Promise<boolean> ou (ctx) => boolean:Função personalizada que determina dinamicamente se o acesso é permitido com base no contexto da requisição, podendo implementar lógicas de permissão complexas.acl.use() é usado para registrar middlewares de permissão personalizados, permitindo inserir lógica personalizada no fluxo de verificação de permissões. Geralmente, é usado em conjunto com ctx.permission para regras de permissão personalizadas. É adequado para cenários que exigem controle de permissão não convencional, como formulários públicos que precisam de verificação de senha personalizada, ou verificações de permissão dinâmicas baseadas em parâmetros de requisição.
Cenários de aplicação típicos:
Controlar permissões através de ctx.permission:
Descrição das propriedades de ctx.permission:
skip: true:Ignora as verificações de permissão ACL subsequentes e permite o acesso diretamente.addFixedParams pode adicionar restrições de escopo de dados fixos (filtro) para operações de certos recursos. Essas restrições ignoram as limitações de função e são aplicadas diretamente, geralmente usadas para proteger dados críticos do sistema.
Dica:
addFixedParamspode ser usado para evitar que dados sensíveis sejam acidentalmente excluídos ou modificados, como funções internas do sistema, contas de administrador, etc. Essas restrições funcionam em conjunto com as permissões de função, garantindo que, mesmo com permissões, os dados protegidos não possam ser manipulados.
acl.can() é usado para verificar se uma determinada função tem permissão para executar uma operação específica, retornando um objeto de resultado de permissão ou null. É comumente usado para verificar permissões dinamicamente na lógica de negócios, por exemplo, em middlewares ou handlers de operações, para decidir se certas operações são permitidas com base na função.
Dica: Se você passar várias funções, cada uma será verificada sequencialmente, e o resultado da primeira função com permissão será retornado.
Definições de Tipo:
Se você deseja que operações personalizadas possam ter suas permissões configuradas na interface (por exemplo, exibidas na página de gerenciamento de funções), você precisa registrá-las usando setAvailableAction. As operações registradas aparecerão na interface de configuração de permissões, onde os administradores podem configurar as permissões de operação para diferentes funções.
Descrição dos parâmetros:
{{t("key")}}).'new-data': Operações que criam novos dados (como importação, adição, etc.).'existing-data': Operações que modificam dados existentes (como atualização, exclusão, etc.).'new-data'.Após o registro, esta operação aparecerá na interface de configuração de permissões, onde os administradores podem configurar as permissões da operação na página de gerenciamento de funções.