Cette documentation a été traduite automatiquement par IA.
Les ACL (Access Control List) servent à contrôler les permissions d'accès aux ressources. Vous pouvez attribuer des permissions à des rôles, ou contourner les restrictions de rôle pour définir des permissions directes. Le système ACL offre un mécanisme de gestion des permissions flexible, prenant en charge les fragments de permission (snippets), les middlewares, les jugements conditionnels et d'autres approches.
Les objets ACL appartiennent aux sources de données (dataSource.acl). L'ACL de la source de données principale est accessible via app.acl. Pour l'utilisation des ACL des autres sources de données, veuillez consulter le chapitre Gestion des sources de données.
Les fragments de permission (Snippets) permettent d'enregistrer des combinaisons de permissions fréquemment utilisées comme des unités de permission réutilisables. Lorsqu'un rôle est lié à un snippet, il obtient l'ensemble de permissions correspondant, ce qui réduit la duplication de configuration et améliore l'efficacité de la gestion des permissions.
allow)acl.allow() permet à certaines opérations de contourner les contraintes de rôle. Cette fonction est utile pour les API publiques, les scénarios nécessitant une évaluation dynamique des permissions, ou les cas où la décision de permission doit être basée sur le contexte de la requête.
Description du paramètre condition :
'public' : Tout utilisateur (y compris les utilisateurs non connectés) peut y accéder, sans aucune authentification.'loggedIn' : Seuls les utilisateurs connectés peuvent y accéder, une identité utilisateur valide est requise.(ctx) => Promise<boolean> ou (ctx) => boolean : Une fonction personnalisée qui détermine dynamiquement si l'accès est autorisé en fonction du contexte de la requête, permettant d'implémenter des logiques de permission complexes.use)acl.use() est utilisé pour enregistrer un middleware de permission personnalisé, permettant d'insérer une logique spécifique dans le processus de vérification des permissions. Il est généralement utilisé avec ctx.permission pour définir des règles de permission personnalisées. Cette fonction est adaptée aux scénarios nécessitant un contrôle de permission non conventionnel, comme la validation de mot de passe personnalisée pour des formulaires publics, ou des vérifications de permission dynamiques basées sur les paramètres de requête.
Scénarios d'application typiques :
Contrôler les permissions via ctx.permission :
Description des propriétés de ctx.permission :
skip: true : Ignore les vérifications de permission ACL ultérieures et autorise directement l'accès.addFixedParams)addFixedParams permet d'ajouter des contraintes de portée de données (filtre) fixes à certaines opérations de ressources. Ces contraintes contournent les restrictions de rôle et sont appliquées directement, généralement pour protéger les données système critiques.
Conseil :
addFixedParamspeut être utilisé pour empêcher la suppression ou la modification accidentelle de données sensibles, telles que les rôles système intégrés, les comptes administrateur, etc. Ces contraintes s'appliquent en combinaison avec les permissions de rôle, garantissant que même avec les permissions, les données protégées ne peuvent pas être manipulées.
can)acl.can() est utilisé pour vérifier si un rôle a la permission d'exécuter une opération spécifiée, et retourne un objet de résultat de permission ou null. Cette fonction est couramment utilisée pour vérifier dynamiquement les permissions dans la logique métier, par exemple dans un middleware ou un gestionnaire d'opérations (Handler), afin de déterminer si certaines actions sont autorisées en fonction des rôles.
Conseil : Si plusieurs rôles sont fournis, chaque rôle sera vérifié séquentiellement, et le résultat du premier rôle ayant la permission sera retourné.
Définitions de type :
setAvailableAction)Si vous souhaitez que des opérations personnalisées puissent être configurées via l'interface utilisateur (par exemple, affichées dans la page de gestion des rôles), vous devez les enregistrer à l'aide de setAvailableAction. Les opérations enregistrées apparaîtront dans l'interface de configuration des permissions, où les administrateurs pourront définir les permissions d'opération pour différents rôles.
Description des paramètres :
{{t("key")}}).'new-data' : Opérations qui créent de nouvelles données (par exemple, importation, ajout, etc.).'existing-data' : Opérations qui modifient des données existantes (par exemple, mise à jour, suppression, etc.).'new-data'.Après l'enregistrement, cette opération apparaîtra dans l'interface de configuration des permissions, où les administrateurs pourront configurer les permissions de cette opération dans la page de gestion des rôles.