Share via


SPSecurity.RunWithElevatedPrivileges method

Executa o método especificado com direitos de controle total, mesmo se o usuário não tiver controle total caso contrário.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaração
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
    Type: Microsoft.SharePoint.SPSecurity.CodeToRunElevated

    Um método de representante que deve ser executado com direitos elevados. Este método é executado sob a identidade do Pool de aplicativos, que tem privilégios de administrador do conjunto de sites em todos os conjuntos de sites hospedados pelo pool de aplicativos.

Comentários

O objeto secureCode pode ser criado de qualquer método sem parâmetros e retorna void. Consulte SPSecurity.CodeToRunElevated.

Você também pode pular usando o construtor de SPSecurity.CodeToRunElevated definindo um método anônimo dentro da chamada para RunWithElevatedPrivileges.

Importante

Se secureCode inclui todas as operações de gravação, a chamada para RunWithElevatedPrivileges deve ser precedida por uma chamada de SPUtility.ValidateFormDigest() ou SPWeb.ValidateFormDigest().

Examples

O primeiro exemplo mostra RunWithElevatedPrivileges usado com o construtor de SPSecurity.CodeToRunElevated . Neste exemplo, GetSitesAndGroups é um método sem parâmetros retorno nulo que é definido em algum lugar que pode ser acessado pelo método Button1_Click .

protected void Button1_Click(object sender, EventArgs e)
{
   SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
   SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}

O exemplo a seguir mostra a sintaxe que é necessária para definir um método anônimo na chamada para RunWithElevatedPrivileges.

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    // implementation details omitted
});

Um objeto SPSite criado fora do delegado pode ser referenciado dentro do delegado, no entanto, os métodos e avaliadores de propriedade do objeto executam com os privilégios do contexto do usuário no qual os objetos foram criados, não com privilégios elevados. O mesmo ponto se aplica a objetos SPWeb e quaisquer outros objetos. Se você precisar executar os membros dos objetos com privilégios elevados, você deve criar novos objetos dentro do delegado. Se o novo objeto deve representar a mesma entidade persistente como um objeto criado fora do delegado, consulte informações de identificação do objeto criado externamente e usá-lo para criar um novo objeto dentro do delegado. Por exemplo, se web é uma referência a um objeto de SPWeb criado antes da chamada para RunWithElevatedPrivileges, em seguida, o código a seguir mostra que você usaria a identificação do objeto pai SPSite para criar um novo objeto de SPSite .

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(web.Site.ID))
    {
    // implementation details omitted
    }
});

Dentro do delegado, os membros do objeto site executar com privilégios elevados, mas chamadas para membros do web.Site não seriam. Observe que a palavra-chave using é usada para garantir que o objeto for descartado no delegado.

Ver também

Referência

SPSecurity class

SPSecurity members

Microsoft.SharePoint namespace

Outros recursos

Elevation of Privilege

Anonymous Methods (C# Programming Guide)