Esta documentación ha sido traducida automáticamente por IA.
ACL (Access Control List) se utiliza para controlar los permisos de operación sobre los recursos. Usted puede asignar permisos a roles, o bien, omitir las restricciones de rol y definir permisos directamente. El sistema ACL ofrece un mecanismo flexible para la gestión de permisos, compatible con fragmentos de permisos, middleware, evaluación condicional y otros métodos.
Los objetos ACL pertenecen a las fuentes de datos (dataSource.acl). El ACL de la fuente de datos principal se puede acceder rápidamente a través de app.acl. Para el uso de ACL en otras fuentes de datos, consulte el capítulo Gestión de fuentes de datos.
Los fragmentos de permisos (Snippets) permiten registrar combinaciones de permisos de uso común como unidades reutilizables. Una vez que un rol se vincula a un snippet, obtiene el conjunto de permisos correspondiente. Esto reduce la configuración repetitiva y mejora la eficiencia en la gestión de permisos.
acl.allow() se utiliza para permitir que ciertas operaciones eludan las restricciones de rol. Es adecuado para APIs públicas, escenarios que requieren una evaluación dinámica de permisos o casos en los que la decisión de permisos debe basarse en el contexto de la solicitud.
Descripción del parámetro condition:
'public' : Cualquier usuario (incluidos los no autenticados) puede acceder, sin necesidad de autenticación.'loggedIn' : Solo los usuarios que han iniciado sesión pueden acceder, requiere una identidad de usuario válida.(ctx) => Promise<boolean> o (ctx) => boolean : Función personalizada que determina dinámicamente si se permite el acceso basándose en el contexto de la solicitud. Permite implementar lógicas de permisos complejas.acl.use() se utiliza para registrar middleware de permisos personalizados, lo que le permite insertar lógica personalizada en el flujo de verificación de permisos. Normalmente se usa junto con ctx.permission para definir reglas de permisos personalizadas. Es adecuado para escenarios que requieren un control de permisos no convencional, como formularios públicos que necesitan verificación de contraseña personalizada o evaluación dinámica de permisos basada en parámetros de solicitud.
Escenarios de aplicación típicos:
Controlar permisos a través de ctx.permission:
Descripción de las propiedades de ctx.permission:
skip: true : Omite las comprobaciones de permisos ACL posteriores y permite el acceso directamente.addFixedParams permite añadir restricciones fijas de ámbito de datos (filtro) a las operaciones de ciertos recursos. Estas restricciones se aplican directamente, omitiendo las limitaciones de rol, y se utilizan normalmente para proteger datos críticos del sistema.
Consejo:
addFixedParamsse puede utilizar para evitar que datos sensibles, como roles integrados del sistema o cuentas de administrador, sean eliminados o modificados accidentalmente. Estas restricciones se superponen con los permisos de rol, asegurando que, incluso con permisos, no se puedan manipular los datos protegidos.
acl.can() se utiliza para determinar si un rol tiene permiso para ejecutar una operación específica, devolviendo un objeto de resultado de permiso o null. Se usa comúnmente para la evaluación dinámica de permisos en la lógica de negocio, por ejemplo, para decidir si se permiten ciertas operaciones en un middleware o en el Handler de una operación, basándose en el rol.
Consejo: Si se pasan varios roles, cada rol se verificará secuencialmente y se devolverá el resultado del primer rol que tenga permiso.
Definiciones de tipo:
Si desea que las operaciones personalizadas se puedan configurar en la interfaz (por ejemplo, que se muestren en la página de gestión de roles), debe registrarlas utilizando setAvailableAction. Las operaciones registradas aparecerán en la interfaz de configuración de permisos, donde los administradores pueden configurar los permisos de operación para diferentes roles.
Descripción de los parámetros:
{{t("key")}}).'new-data' : Operaciones que crean nuevos datos (como importar, añadir, etc.).'existing-data' : Operaciones que modifican datos existentes (como actualizar, eliminar, etc.).'new-data'.Después del registro, esta operación aparecerá en la interfaz de configuración de permisos, donde los administradores pueden configurar los permisos de la operación en la página de gestión de roles.