开发者

Access denied when using RunWithElevatedPrivileges?

I want regular user can access the "User Information List" in Mysite root site. I开发者_JS百科 am using "RunWithElevatedPrivileges" method. Still throwing access denied error. per example my root site collection for mysite is "http://network.test.com". the user want assess userinformation list this site collection. How can he access that?

 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"];


SPContext.Current runs outside the RunWithelevatedPrivileges elevated context. For more info see this blog post.


You're setting your SPWeb to SPContext.Current.Web, this doesn't have elevated privileges. Only SPWebs created from SPSites created inside the delegate are elevated.

So you need to replace

SPWeb web = SPContext.Current.Web;

with

SPWeb web = site.OpenWeb(SPContext.Current.Web.ID);


You're setting your SPWeb to SPContext.Current.Web this doesn't have elevated privileges. Refer this post:

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜