del método SPSecurity.RunWithElevatedPrivileges
Incluso si el usuario no tiene Control total en caso contrario, se ejecuta el método especificado con los derechos de Control total.
Espacio de nombres: Microsoft.SharePoint
Ensamblado: Microsoft.SharePoint (en Microsoft.SharePoint.dll)
Sintaxis
'Declaración
Public Shared Sub RunWithElevatedPrivileges ( _
secureCode As SPSecurity.CodeToRunElevated _
)
'Uso
Dim secureCode As SPSecurity.CodeToRunElevatedSPSecurity.RunWithElevatedPrivileges(secureCode)
public static void RunWithElevatedPrivileges(
SPSecurity.CodeToRunElevated secureCode
)
Parámetros
secureCode
Tipo: Microsoft.SharePoint.SPSecurity.CodeToRunElevatedUn método de delegado que se va a ejecutar con derechos elevados. Este método se ejecuta bajo la identidad del grupo de aplicaciones, que tiene privilegios de administrador de colección de sitios en todas las colecciones de sitios hospedadas por ese grupo de aplicaciones.
Comentarios
El objeto secureCode puede crearse desde cualquier método que no tiene parámetros y devuelve void. Vea SPSecurity.CodeToRunElevated.
También puede omitir utilizando el constructor de SPSecurity.CodeToRunElevated mediante la definición de un método anónimo dentro de la llamada a RunWithElevatedPrivileges.
Importante
Si secureCode incluye operaciones de escritura, la llamada a RunWithElevatedPrivileges debe ir precedida por una llamada de SPUtility.ValidateFormDigest() o SPWeb.ValidateFormDigest().
Ejemplos
El primer ejemplo muestra RunWithElevatedPrivileges que se utiliza con el constructor SPSecurity.CodeToRunElevated . En este ejemplo, GetSitesAndGroups es un método sin parámetros que devuelve void y se define en algún lugar que puede tener acceso mediante el método Button1_Click .
protected void Button1_Click(object sender, EventArgs e)
{
SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}
En el ejemplo siguiente se muestra la sintaxis que se necesita para definir un método anónimo en la llamada a RunWithElevatedPrivileges.
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// implementation details omitted
});
Puede hacer referencia a un objeto SPSite que se crean fuera del delegado dentro del delegado, sin embargo, los métodos y los evaluadores de propiedad del objeto ejecutarán con los privilegios del contexto del usuario en que se crearon los objetos, no con privilegios elevados. El mismo punto se aplica a los objetos SPWeb y cualquier otro objeto. Debe crear nuevos objetos dentro del delegado si necesita ejecutar a los miembros de los objetos con privilegios elevados. Si el nuevo objeto debe representar la misma entidad almacenada como un objeto que se crean fuera del delegado, debe hacer referencia a la información de identificación desde el objeto externamente creado y úsela para crear el nuevo objeto dentro del delegado. Por ejemplo, si web es una referencia a un objeto de SPWeb creado antes de llamar a RunWithElevatedPrivileges, el siguiente código muestra que usaría el identificador de su objeto de SPSite primario para construir un nuevo objeto SPSite .
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(web.Site.ID))
{
// implementation details omitted
}
});
Dentro del delegado, los miembros del objeto site ejecutan con privilegios elevados, pero las llamadas a los miembros de web.Site no lo haría. Tenga en cuenta que se usa la palabra clave de using para asegurarse de que se elimina el objeto en el delegado.
Vea también
Referencia
Espacio de nombres Microsoft.SharePoint