Utilisation de with sharing pour des contrôleurs Apex @AuraEnabled avec le partage implicite (mise à jour automatiquement appliquée)

Cette mise à jour modifie le comportement des contrôleurs Apex @AuraEnabled qui ne spécifient pas with sharing ou without sharing par défaut sur with sharing. Cette mise à jour s'applique uniquement aux organisations créées après la version Spring ’18 ou aux organisations qui ont activé la mise à jour retirée Utiliser without sharing pour les contrôleurs Apex @AuraEnabled avec le partage implicite qui avait l'effet inverse et définissait la valeur par défaut sur without sharing. Les organisations créées avant la version Spring ’18 appliquent déjà with sharing par défaut. Ces organisations n'affichent pas la mise à jour, sauf si elles ont activé la mise à jour without sharing qui a été retirée.

Où : cette modification s'applique aux composants Aura et Web Lightning dans Lightning Experience, Salesforce Classic, les sites de Générateur d'expérience et dans toutes les versions de l'application Salesforce.

Quand : cette mise à jour est appliquée lors de la mise à niveau d'une organisation sandbox ou de production vers Spring ’21. L'application automatique commence le 29 novembre 2020 pour certaines organisations sandbox. Pour recevoir la date de mise à niveau de la version majeure de votre instance, accédez à Statut Trust, recherchez votre instance, puis cliquez sur l'onglet de maintenance.

Pourquoi : une classe Apex @AuraEnabled qui ne définit pas explicitement with sharing ou without sharing utilise la valeur par défaut ou implicite with sharing. L'object de la mise au jour retirée Utiliser without sharing pour les contrôleurs Apex @AuraEnabled avec le partage implicite était d'appliquer par défaut without sharing aux contrôleurs Apex pour les composants Aura. Avec ce comportement, les contrôleurs Apex étaient cohérents dans les composants Aura et les pages Visualforce.

Après réflexion, nous avons décidé de garantir la protection par défaut des composants Lightning. Par conséquent, nous avons créé cette mise à jour qui applique par défaut with sharing aux classes Apex @AuraEnabled utilisées par des composants Aura ou des composants Web Lightning.

Généralement, les classes Apex sont exécutées en mode système. Par conséquent, les identifiants de l'utilisateur actuel ne sont pas utilisés pour exécuter la logique Apex, et les autorisations et la sécurité au niveau du champ de l'utilisateur ne sont pas automatiquement appliquées.

Vous pouvez définir si une classe Apex applique les règles de partage en utilisant les mots-clés with sharing ou without sharing. L'activation des règles de partage en utilisant les mots-clés with sharing n'applique pas les autorisations de l'utilisateur ni la sécurité au niveau du champ. Vous devez appliquer manuellement les autorisations CRUD et la sécurité au niveau du champ séparément dans vos classes Apex.

Comment : pour préparer cette mise à jour, assurez-vous que tout votre code Apex @AuraEnabled contrôle explicitement le comportement de partage en utilisant les mots-clés with sharing ou without sharing. Si tout votre code @AuraEnabled définit explicitement le comportement de partage, cette mise à jour est sans effet.

Pour tester cette mise à jour, nous recommandons de travailler dans une organisation sandbox. À partir du 29 novembre 2020, vous pouvez continuer à activer ou à désactiver la mise à jour depuis Mises à jour de version dans la Configuration jusqu'à son application automatique lors de la mise à niveau de votre organisation vers la version Spring ’21.

  1. Dans Configuration, saisissez Mises à jour de version dans la case Recherche rapide, puis sélectionnez Mises à jour de version.
  2. Recherchez Utiliser with sharing pour les contrôleurs Apex @AuraEnabled avec le partage implicite, puis cliquez sur Afficher les détails ou Commencer.
  3. Testez le comportement des composants utilisant des classes Apex qui ne contiennent pas les mots-clés with sharing ou without sharing.