設問
アーキテクトは、Lead オブジェクトの標準 Apex コントローラであるカスタム Visualforce アプリケーション内で、オブジェクトレベルのセキュリティが確実に適用されるようにするにはどうすればよいですか?
選択肢
A. runAs() メソッドを使用して、Apex コントローラでユーザ権限を強制します。
B. Apex コントローラで Schema.DescribeSObjectResult.isAccessible() メソッドを使用します。
C. Visualforce ページ内で {!$ObjectType.lead.accessible} 式を使用します。
D. Visualforce ページを定義するときは、「With Sharing」キーワードを使用します。
解答
C. Visualforce ページ内で {!$ObjectType.lead.accessible} 式を使用します。
解説
A. runAs() メソッドを使用して、Apex コントローラでユーザ権限を強制します。
不正解です。runAs() はテストクラス内でのみ使用可能な構文で、本番コードでは使えません。権限を強制する用途ではありません。
B. Apex コントローラで Schema.DescribeSObjectResult.isAccessible() メソッドを使用します。
不正解です。このメソッドは Apex クラス内でオブジェクトのアクセス可否を確認するために有効ですが、「標準コントローラ」には使えません。
C. Visualforce ページ内で {!$ObjectType.lead.accessible} 式を使用します。
正解です。このグローバル変数を使うと、Visualforce ページ内でオブジェクトレベルのアクセス制御を視覚的にチェックして表示の制御が可能になります。
D. Visualforce ページを定義するときは、「With Sharing」キーワードを使用します。
不正解です。「with sharing」はレコードレベルの共有設定に影響しますが、オブジェクトレベルのセキュリティとは関係ありません。
第163問
こちらをクリック