Seguridad imperativa
La sintaxis de seguridad imperativa emite una llamada de seguridad mediante la creación de una nueva instancia del objeto de permiso que se desea invocar. La sintaxis imperativa se puede utilizar para realizar peticiones y reemplazos, pero no para realizar solicitudes.
Antes de realizar la llamada de seguridad, deberá inicializar los datos de estado del objeto de permiso de manera que represente la forma concreta del permiso que necesita. Por ejemplo, al crear un objeto FileIOPermission, puede utilizar el constructor para inicializar el objeto FileIOPermission de modo que represente el acceso ilimitado a todos los archivos o ningún acceso a los archivos. O bien, puede utilizar otro objeto FileIOPermission y pasar los parámetros que indiquen el tipo de acceso que desea que represente el objeto (es decir, lectura, anexar o escritura) y qué archivos desea que el objeto proteja.
Además de utilizar la sintaxis de seguridad imperativa para invocar un solo objeto de seguridad, puede utilizarla para inicializar un grupo de permisos, denominado conjunto de permisos. Por ejemplo, esta técnica es la única forma fiable de realizar llamadas assert en múltiples permisos en un método. Utilice las clases PermissionSet y NamedPermissionSet para crear un grupo de permisos y, a continuación, llame al método correspondiente para invocar la llamada de seguridad que desee.
La sintaxis imperativa se puede utilizar para realizar peticiones y reemplazos, pero no para realizar solicitudes. Puede utilizar la sintaxis imperativa para las peticiones y los reemplazos en lugar de la sintaxis declarativa cuando la información necesaria para inicializar el estado de permiso sólo se revela en tiempo de ejecución. Por ejemplo, si desea garantizar que los llamadores tienen permiso para leer un archivo determinado pero no conoce el nombre de dicho archivo hasta el tiempo de ejecución, utilice una petición imperativa. También puede optar por utilizar comprobaciones imperativas en lugar de comprobaciones declarativas cuando necesita determinar en tiempo de ejecución si una condición se mantiene y, basándose en el resultado de la comprobación, realizar (o no) una petición de seguridad.
En el siguiente fragmento de código se muestra la sintaxis imperativa que solicita que los llamadores del código tengan un permiso personalizado denominado MyPermission
. Este permiso es un permiso personalizado hipotético y no existe en .NET Framework. Se crea una nueva instancia de MyPermision
en MyMethod
, por lo que sólo se protege este método con la llamada de seguridad.
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.
}
}
Vea también
Referencia
FileIOPermission
SystemSecurityPermissionSet Class
NamedPermissionSet Class
Conceptos
Sintaxis de seguridad
Conjuntos de permisos con nombre
Utilizar el método Assert