Usuário com melhor resposta
elevação de permissão para Sharepoint 2

Pergunta
-
Colegas,
No Sharepoint 3, temos como fazer a elevação de permissão usando
SPSecurity.RunWithElevatedPrivileges ...
alguém sabe me dizer se no Sharepoint 2(WSS 2) é possível também?
e outra coisa: preciso migrar sites em Sharepoint 2 pra Sharepoint 3, mas tenho muitos documentos do Office nas documents libraries do Sharepoint 2, saberiam me izer alguma dica para isso,pois nao é possivel restaurar um backup do Sharepoint 2 no Sharepoint 3.
Obrigado
Respostas
-
JSantos,
Sim, mais tome cuidado, quando a função .Impersonate() executar, todo o código que você executar entre este comando e o wic.Undo() será realizado com o usuário definido no objeto WindowsIdentity, ou seja, quando você executar o listEvent.Site.OpenWeb(), o seu objeto site (SPWeb) estará sendo executado como o usuário definido na identidade, e não mais com o usuário que veio na requisição, que poderia ser autenticação integrada ou o usuário do pool de aplicativos.
Abraços,
Qualquer coisa posta aqui...
flw..... =) .....
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 26 de junho de 2012 17:48
Todas as Respostas
-
JSantos,
Uma forma de você fazer isso é instanciar o objeto SPWeb durante uma execução de impersonate com outro usuário, mais ou mesmo isso.........
Code Snippetvoid IListEventSink.OnEvent(SPListEvent listEvent)
{
WindowsImpersonationContext wic = null;
SPWeb site = null;
try
{
// Assumir identidade de outro usuário, aqui você poderia recuperar um objeto WindowsIdentity representando um
// token do seu usuário.
wic = WindowsIdentity.GetCurrent().Impersonate();
// Quando você instanciar a web, a sua propriedade CurrentUser será definida como o usuário do impersonate, não
// o que veio da execução.
site = listEvent.Site.OpenWeb();
}
catch(Exception ex)
{
}
finally
{
// Aqui você desfaz impersonate e volta a realizar operações como usuário normal
if (wic!=null)
wic.Undo();
}
} -
-
JSantos,
Sim, mais tome cuidado, quando a função .Impersonate() executar, todo o código que você executar entre este comando e o wic.Undo() será realizado com o usuário definido no objeto WindowsIdentity, ou seja, quando você executar o listEvent.Site.OpenWeb(), o seu objeto site (SPWeb) estará sendo executado como o usuário definido na identidade, e não mais com o usuário que veio na requisição, que poderia ser autenticação integrada ou o usuário do pool de aplicativos.
Abraços,
Qualquer coisa posta aqui...
flw..... =) .....
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 26 de junho de 2012 17:48