Acesso negado ao usar o RunwithelevatedPrivileges?
-
27-09-2019 - |
Pergunta
Quero que o usuário regular possa acessar a "Lista de informações do usuário" no site do MySite Root. Estou usando o método "runwithelevatedprivileges". Ainda jogando acesso ao erro negado. por exemplo, minha coleção de sites raiz para mysite é "http://network.test.com". O usuário deseja avaliar a lista de informações do usuário esta coleção de sites. Como ele pode acessar isso?
SPSecurity.RunWithElevatedPrivileges(delegate
{
using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID))
{
ServerContext sc = ServerContext.Current;
UserProfileManager upm = new UserProfileManager(sc);
UserProfile up = null;
//get current user's profile (visitor)
if (upm.UserExists(SPContext.Current.Web.CurrentUser.LoginName))
{
up =upm.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName);
SPWeb web = SPContext.Current.Web;
SPList userInformationList = web.Lists["User Information List"];
Solução
SPContext.Current
corre para fora do RunWithelevatedPrivileges
contexto elevado. Para mais informações, consulte isto Postagem do blog.
Outras dicas
Você está configurando seu spweb como spcontext.current.web, isso não possui privilégios elevados. Somente Spwebs criados a partir de spsites criados dentro do delegado são elevados.
Então você precisa substituir
SPWeb web = SPContext.Current.Web;
com
SPWeb web = site.OpenWeb(SPContext.Current.Web.ID);
Você está configurando seu spweb como spcontext.current.web Isso não possui privilégios elevados. Consulte isso publicar: