• Accueil / Salesforce / Blog de Bob…
, Blog de Bob Buzzard: Printemps 21<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

Blog de Bob Buzzard: Printemps 213 minutes de lecture


, Blog de Bob Buzzard: Printemps 21<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

(Mise à jour le 11/02 pour corriger une faute de frappe sur le partage hérité lorsque Apex est appelé en démarrant une transaction. Mea culpa)

introduction

La version Spring 21 de Salesforce comprend une mise à jour qui peut changement
le comportement de vos classes Apex utilisées comme contrôleurs pour Aura ou
Composants Web d’éclairage. Si votre organisation a été créée après le printemps 18
Version de Salesforce, ou vous avez activé la mise à jour (maintenant retirée)

Utilisation without sharing pour @AuraEnabled Contrôleurs Apex avec partage implicite

alors par défaut, vos contrôleurs fonctionnent comme sans partage, ce qui signifie qu’ils
ne pas prendre en compte les paramètres de partage de l’utilisateur qui fait la demande et
autoriser l’accès à tous les enregistrements.

Une fois le printemps 21 lancé, le

Utilisation with sharing pour @AuraEnabled Contrôleurs Apex avec partage implicite (mise à jour, appliquée)

sera appliqué et ce comportement sera inversé – la valeur par défaut sera avec partage et l’accès ne sera autorisé que
pour les enregistrements appartenant à l’utilisateur ou partagés avec celui-ci.

Pourquoi le changement

En un mot, la sécurité. Cette mise à jour sécurise vos composants par défaut – si vous oubliez de spécifier avec partage ou sans partage, le principe du moindre privilège est appliquée et l’option la plus restrictive est choisie.

L’absence de mot-clé de partage peut également être considérée comme un mot-clé de partage

Je ne suis vraiment pas fan des comportements de conduite par omission, surtout quand ce comportement n’est pas garanti. Avant la version Spring 21, si vous ne spécifiez pas le type de partage, il n’y a aucun moyen de savoir en inspectant le code lui-même ce qui se passera. Toute personne déboguant un problème de partage devrait savoir quand l’organisation a été provisionnée ou savoir si la mise à jour précédente a été appliquée, en supposant toujours qu’elle peut accéder à la production pour le savoir!

Historiquement, une des raisons d’omettre le partage était de permettre au code d’hériter du partage de l’appel à Apex. Cela permettait à une classe de s’exécuter comme si:

  • avec partage est défini, s’il est appelé à partir d’une classe définie comme avec partage
  • sans partage est défini, s’il est appelé à partir d’une classe définie comme sans partage

ce qui donne une grande flexibilité, avec le compromis que le même comportement s’applique si vous avez oublié la déclaration de partage plutôt que de l’exclure intentionnellement. Un commentaire pour clarifier l’intention pourrait aider ici, mais c’est quelque chose d’autre à retenir.

Partage hérité

Winter 19 a fait un grand pas en avant pour les programmeurs oublieux avec l’introduction du partage hérité mot-clé. Cela indique explicitement que la classe héritera du partage du code appelant, donc nul besoin d’essayer de déduire ce que les mots-clés de partage manquants pourraient signifier.

Une légère ride à ceci est ce qui fait partage hérité signifie quand le code appelant n’est pas Apex – c’est-à-dire quand il est le point d’entrée d’une transaction et donc exécuté par la plateforme Salesforce? Un bon exemple de ceci est un @AuraEnabled classe utilisée comme contrôleur pour un composant Web Aura ou Lightning, c’est-à-dire là où nous sommes arrivés à cet article!

Appel à l’action

Alors rendez-vous service à vous-même et à votre équipe, et lorsque vous vérifiez votre @AuraEnabled classes pour voir si elles seront affectées par la mise à jour Spring 21, si vous en trouvez sans mot-clé de partage, ajoutez-en un pour indiquer clairement le partage appliqué. Votre futur moi vous remerciera, et cela signifie également que Salesforce peut inverser ce que devrait être l’absence d’un mot-clé de partage et que votre code reste inchangé.

Articles Similaires





Source de l’article traduit automatiquement en Français

Besoin d'aide ?
Vous utilisez Pardot depuis un certain temps mais vous n'êtes pas sûr d'en
exploiter tout le potentiel

Notre analyse de votre Pardot offerte dès aujourd'hui
Merci, vous pouvez compléter notre questionnaire
Nous allons revenir vers vous rapidement !

Fermer