2010-04-20 55 views
3

下面的代码总是返回(这是不正确,因为用户有完全控制权限在网站级别):如何使用客户端对象模型检查SharePoint 2010上的用户权限?

Site site; 
BasePermissions permissionMask; 
ClientResult<bool> result; 

permissionMask = new BasePermissions(); 
permissionMask.Set(PermissionKind.ManageWeb); 
result = site.DoesUserHavePermissions(permissionMask); 

return result.Value; 

我试图利用新的SharePoint 2010客户端对象模型。当我发现DoesUserHavePermissions方法时,我很兴奋,但似乎我并不确定我是否知道如何使用它。我不知道我是否使用了正确的掩码,或者是否应该指定希望检查权限级别的用户帐户?任何帮助将不胜感激。谢谢。

回答

4

缺少一件重要的事情 - 客户端上下文。该对象负责通过任何SharePoint Client对象模型对象实际执行查询。

代码应修改如下:

ClientContext clientContext; 
Site site; 
BasePermissions permissionMask; 
ClientResult<bool> result; 

permissionMask = new BasePermissions(); 
permissionMask.Set(PermissionKind.ManageWeb); 
//if we want to check ManageWeb permission 
clientContext = new ClientContext(siteUri); 
//siteUri is a method parameter passed as a string 
clientContext.Credentials = credential; 
//credential is a method parameter passed as a NetworkCredential object 
//that is the user for which we are checking the ManageWeb permission 
site = clientContext.Web; 
result = site.DoesUserHavePermissions(permissionMask); 

return result.Value; 

如果用户被分配ManageWeb权限,还是否则为false这将返回true。 有关权限枚举的完整列表,请查看此MSDN page

1

只是想我会添加一些我使用的代码。这几乎是相同的,但没有膨胀。

using (var context = new ClientContext(siteUrl)) 
{ 
    context.Load(context.Web); 
    context.ExecuteQuery(); 
    BasePermissions permissionMask; 
    ClientResult<bool> hasPermissions; 
    permissionMask = new BasePermissions(); 
    permissionMask.Set(PermissionKind.ManageWeb); 
    hasPermissions = context.Web.DoesUserHavePermissions(permissionMask); 

} 
相关问题