3

以下代码始终返回false(这是不正确的,因为用户在站点级别具有完全控制权限):

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

2 回答 2

4

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

代码应修改为以下内容:

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 权限,这将返回 true,否则返回 false。有关权限枚举的完整列表,请查看此MSDN 页面

于 2010-05-11T08:14:47.773 回答
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);

}
于 2013-08-09T09:00:19.720 回答