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.CodeToRunElevatedUm 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
Microsoft.SharePoint namespace