如何授予用户权限使用客户端对象模型的某些文件夹? [英] How to grant user permission to certain folders using Client Object Model?
问题描述
到目前为止,我能够给予用户一定的权限用下面的代码:
So far I am able to grant user certain permission with the following code:
ClientContext context = new ClientContext("http://myRealURL");
Principal user = context.Web.EnsureUser(@"myLoginAccout");
RoleDefinition readDef = context.Web.RoleDefinitions.GetByName("Read");
RoleDefinitionBindingCollection roleDefCollection = new RoleDefinitionBindingCollection(context);
roleDefCollection.Add(readDef);
RoleAssignment newRoleAssignment = context.Web.RoleAssignments.Add(user, roleDefCollection);
context.ExecuteQuery();
上面的代码工作正常,但现在我的任务是将用户权限仅添加到用C#某些文件夹码。例如,在图书馆,我有一个名为 JZhu
,并在 JZhu
库,我有两个文件夹文件夹1
和文件夹2
。是否有可能改变这两个文件夹的访问权限与客户端对象模型
?
The code above works fine, now my task is to add the user permission only to certain folders with C# code. For example, under Libraries, I have a library called JZhu
, and inside JZhu
, I have two folders folder1
and folder2
. Is it possible to change the access permission on these two folders with Client Object Model
?
推荐答案
下面的例子演示了如何通过CSOM定制访问文件夹。有两个步骤:
The following example demonstrates how to customize access to folder via CSOM. There are two steps:
- 分配一个文件夹的唯一权限,因为默认文件夹
继承父对象的权限(名单) - 授予用户权限的文件夹
例如:
Principal user = ctx.Web.EnsureUser(accountName);
var folder = ctx.Web.GetFolderByServerRelativeUrl(folderUrl);
var roleDefinition = ctx.Site.RootWeb.RoleDefinitions.GetByType(RoleType.Reader); //get Reader role
var roleBindings = new RoleDefinitionBindingCollection(ctx) { roleDefinition };
folder.ListItemAllFields.BreakRoleInheritance(true, false); //set folder unique permissions
folder.ListItemAllFields.RoleAssignments.Add(user, roleBindings);
ctx.ExecuteQuery();
,其中 folderUrl
参数对应于相对于服务器网址为一个文件夹,
, where folderUrl
parameter corresponds to server relative url for a folder,
例如 /新闻/文件/档案
以下结构:
News (site)
|
Documents (library)
|
Archive (folder)
这篇关于如何授予用户权限使用客户端对象模型的某些文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!