2012-09-03 109 views
0

没有罗列许可我们知道,我们可以这样做检查用户的权限,如何获取SharePoint对象的权限?提前致谢。检查当前用户的权限,如果用户在SharePoint

+0

[你的意思是像 “系统” 的权限?](http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.systemaccount.aspx) – bzlm

+0

@bzlm我的意思是SharePoint权限如“阅读”,“仅查看”,“完全控制”等。 –

+0

如果您愿意,我们可以将其移至我们的SharePoint网站,您可能会得到更好的答案。如果你想这样做,请给我或者@发信息给我。 – Kev

回答

2

你可以通过打开一个“admin”web实例(创建一个SPSite对象并将系统帐户的用户令牌传递给它)来完成。这样你就不用担心当前用户是否有足够的权限。

SPUserToken adminToken = SPContext.Current.Web.AllUsers["SHAREPOINT\\System"].UserToken; 
using (SPSite adminSite= new SPSite(SPContext.Current.Site.ID, adminToken)) { 
    using (SPWeb adminWeb = adminSite.OpenWeb(SPContext.Current.Web.ID)){ 
     if (adminWeb.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open)) { 
      //do something 
     } 
    } 
} 

当然,您最好不要在每次页面加载时都这样做,因为创建和处理SPSite/SPWeb对象的代价相对较高。

+0

感谢您的回答。有用。 –

0

这里我定义了一个函数,它需要一个SharePoint列表对象,一个角色类型和一个用户。

  • portal:Sharepoint列表或文档库对象。
  • 角色:由Sharepoint提供的角色类型,如Read,Design等。
  • 用户:您想要在门户上授予角色的用户。

希望它能帮助你。

public static void AssignPermissionToPortal(string portal, SPRoleType role, SPUser user) 
     { 
      try 
      { 
       // Run with elevated privileges 
       SPSecurity.RunWithElevatedPrivileges(delegate() 
       { 
        using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID)) 
        { 
         using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID)) 
         { 
          web.AllowUnsafeUpdates = true; 

          SPList portalList = SPListHelper.GetSPList(portal, web); 
          portalList.BreakRoleInheritance(false); 

          //Add Readers on portal 
          SPRoleDefinition permission = web.RoleDefinitions["Read"]; 

          if (role == SPRoleType.Administrator) 
           permission = web.RoleDefinitions["Full control"]; 
          else if (role == SPRoleType.Contributor) 
           permission = web.RoleDefinitions["Contribute"]; 
          else if (role == SPRoleType.WebDesigner) 
           permission = web.RoleDefinitions["Design"]; 
          else 
           permission = web.RoleDefinitions["Read"]; 

          // Check the user Role on site level. 
          SPUser roleUser = uHelper.GetUserById(user.ID); 

          if (roleUser != null) 
          { 
           SPRoleAssignment assignment = new SPRoleAssignment(roleUser); 
           assignment.RoleDefinitionBindings.Add(permission); 

           portalList.RoleAssignments.Add(assignment); 
           portalList.Update(); 
          } 

          web.AllowUnsafeUpdates = false; 
         } 
        } 
       }); 
      } 
      catch (Exception ex) 
      { 
       Log.WriteException(ex); 
      } 
}