为什么我的List.GetUserEffectivePermissions()方法不起作用?

时间:2015-07-23 21:43:00

标签: c# sharepoint-2013 csom

我正在使用SharePoint 2013客户端对象模型在C#中开发流程。我需要检索给定用户的SharePoint列表权限,这与执行代码的用户不同。

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

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

执行代码的用户有权在Web和List级别枚举权限。我已用下面的代码证实了这一点,两个布尔都认为是真的。

Ord

任何人都可以帮我确定我的GetUserEffectivePermissions()方法有什么问题吗?

1 个答案:

答案 0 :(得分:1)

当您调用GetUserEffectivePermissions时,您需要传递登录名的完整声明令牌版本,如下所示:

I:0#.W |域\用户

您可以通过在用户对象上加载LoginName属性来获取此信息:

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

当然,对于当前用户来说,您需要首先获得您真正想要的用户。