問題
開発者は、Lightningコンポーネントが取引先責任者のレコードを検索するために使用できるApexクラス「ContactController」を作成する必要があります。Lightningコンポーネントのユーザーは、自分がアクセス権を持つ取引先責任者のレコードのみを検索できるようにするべきです。正しくレコードを制限するための方法は何ですか。2つ選びなさい。
- public class ContactController
- public with sharing class ContactController
- public without sharing class ContactController
- public inherited sharing class ContactController
正解
- public class ContactController
- public with sharing class ContactController
- public without sharing class ContactController
- public inherited sharing class ContactController
解説
それぞれの選択肢の理由について説明します。
□ public class ContactController
これは不正解です。この宣言だけではレコードへのアクセス制限は明示的には行われません。このクラスは、呼び出し元のクラスやトリガーの共有設定に依存します。
□ public with sharing class ContactController
これは正解です。「with sharing」キーワードを使用すると、このクラスは実行ユーザーの共有設定を尊重します。つまり、ユーザーがアクセスできるレコードのみを検索や操作できるようになります。
□ public without sharing class ContactController
これは不正解です。「without sharing」キーワードを使用すると、このクラスは実行ユーザーの共有設定を無視します。これは、ユーザーがアクセスできないレコードにもアクセスできる可能性があるため、この要件には適していません。
□ public inherited sharing class ContactController
これは正解です。inherited sharingキーワードを使用すると、クラスは親クラスまたは呼び出し元の共有設定を継承します。これにより、クラスが他の「with sharing」クラスから呼び出される場合、ユーザーの共有設定を尊重することができます。このキーワードは、クラスが共有設定を持たない場合や、他のクラスから呼び出される場合に特に有用です。
コメント