为什么我的list . getusereffecvepermissions()方法不工作

本文关键字:方法 工作 我的 list getusereffecvepermissions 为什么 | 更新日期: 2023-09-27 18:04:35

我正在用c#开发一个SharePoint 2013客户端对象模型的过程。我需要检索给定用户的SharePoint列表权限,这将不同于执行代码的用户。

using SP = Microsoft.SharePoint.Client;
SP.ClientContext SpContext = new SP.ClientContext("SITEURL");
SP.Web SiteWeb = SpContext.Web;
SP.List Lst = SpContext.Web.Lists.GetByTitle("LIST");
var ClientUserEffPerms = Lst.GetUserEffectivePermissions(@"<domain>'<username>");
SpContext.Load(SiteWeb, S => S.EffectiveBasePermissions);
SpContext.Load(Lst, L => L.EffectiveBasePermissions);
SpContext.ExecuteQuery();

此代码执行后,ClientUserEffPerms。Value (BasePermissions)对象不能正确表示给定用户的权限。该对象不是空的,但它表示用户没有权限。该用户至少具有查看和编辑权限,我可以通过以该用户身份使用web浏览器查看/编辑列表项来确认这一点。

代码执行用户具有枚举Web和List级别权限的权限。我已经用下面的代码确认了这一点,两个布尔值都解析为true。

bool SvcUserHasSiteEnumPermsPerm = SiteWeb.EffectiveBasePermissions.Has(SP.PermissionKind.EnumeratePermissions);
bool SvcUserHasListEnumPermsPerm = Lst.EffectiveBasePermissions.Has(SP.PermissionKind.EnumeratePermissions);

有没有人可以帮助我确定我的GetUserEffectivePermissions()方法有什么问题?

为什么我的list . getusereffecvepermissions()方法不工作

当您调用getusereffecvepermissions时,您需要传入登录名的完整声明令牌版本,它看起来像这样:

我:0 # .w |用户域'

你可以通过在用户对象上加载LoginName属性来获得这个:

clientContext.Load(clientContext.Web.CurrentUser, i => i.LoginName);
clientContext.ExecuteQuery();

当然,这是针对当前用户的,所以你需要首先获得你真正想要的用户。