以下代码始终返回 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方法时,我很激动,但似乎我不确定我是否知道如何使用它。我不知道我是否使用了正确的掩码,或者我是否应该指定我想要检查其权限级别的用户帐户?任何帮助将不胜感激。谢谢。
答案 0 :(得分: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 page。
答案 1 :(得分: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);
}