強制セキュリティ
更新 : 2007 年 11 月
強制セキュリティ構文は、呼び出す対象のアクセス許可オブジェクトの新しいインスタンスを作成することによって、セキュリティ呼び出しを実行します。強制構文を使用して確認要求とオーバーライドは実行できますが、要求は実行できません。
セキュリティ呼び出しを行う前に、アクセス許可オブジェクトの状態データを、必要な特定形式のアクセス許可を表すように初期化する必要があります。たとえば FileIOPermission オブジェクトを作成するときに、コンストラクタを使用して、すべてのファイルに対する無制限のアクセス権、またはファイルへのアクセス禁止を表すように FileIOPermission オブジェクトを初期化できます。または、別の FileIOPermission オブジェクトを使用して、このオブジェクトで表すアクセス権の種類 (読み込み、追記、または書き込み) と、このオブジェクトで保護するファイルを示すパラメータを渡すこともできます。
強制セキュリティ構文は、単一のセキュリティ オブジェクトを呼び出す他に、アクセス許可セットと呼ばれるアクセス許可のグループを初期化するためにも使用できます。たとえば、1 つのメソッドで複数のアクセス許可に対してアサート呼び出しを確実に実行するためには、このテクニックが唯一の方法となります。それには、PermissionSet クラスと NamedPermissionSet クラスを使用して、アクセス許可のグループを作成し、適切なメソッドを呼び出して必要なセキュリティ呼び出しを実行します。
強制構文を使用して確認要求とオーバーライドは実行できますが、要求は実行できません。アクセス許可の状態を初期化するために必要な情報を実行時にしか取得できない場合には、確認要求やオーバーライドを実行するときに、宣言構文の代わりに強制構文を使用します。たとえば、呼び出し元に特定のファイルを読み取るためのアクセス許可が必要である場合に、読み取り対象のファイルの名前が実行時までわからないときには、強制確認要求を使用します。また、条件を適用するかどうか、およびテストの結果に基づいてセキュリティ確認要求を実行するかどうかを実行時に決定する必要がある場合にも、宣言チェックの代わりに強制チェックを使用できます。
コードの呼び出し元がカスタム アクセス許可 MyPermission を持つことを要求する強制構文の例を次のコード片に示します。このアクセス許可は架空のカスタム許可であり、.NET Framework には実在しません。MyPermision の新しいインスタンスが MyMethod で生成され、このメソッドだけをセキュリティ呼び出しで保護します。
Public Class MyClass1
Public Sub New()
End Sub
Public Sub MyMethod()
'MyPermission is demanded using imperative syntax.
Dim Perm As New MyPermission()
Perm.Demand()
'This method is protected by the security call.
End Sub
Public Sub YourMethod()
'YourMethod 'This method is not protected by the security call.
End Sub
End Class
public class MyClass {
public MyClass(){
}
public void MyMethod() {
//MyPermission is demanded using imperative syntax.
MyPermission Perm = new MyPermission();
Perm.Demand();
//This method is protected by the security call.
}
public void YourMethod() {
//This method is not protected by the security call.
}
}
参照
概念
参照
SystemSecurityPermissionSet クラス