使用 csom 防止一组用户访问共享文档
Prevent a group of user access Shared Document using csom
我想阻止 sharepoint 中的一组用户(例如:成员)使用 csom 访问 "Shared Documents"。
但是,当我执行我的代码时它不起作用(我上面提到的组中的帐户仍然可以访问我的站点。
有我的代码:
ClientContext context = new ClientContext("https://example.com/sites/Litware");
SecureString password = new SecureString();
foreach (char c in "abcd".ToCharArray()) password.AppendChar(c);
context.Credentials = new SharePointOnlineCredentials("example@example.onmicrosoft.com", password);
var web = context.Web;
context.Load(web);
context.ExecuteQuery();
var memGroup = web.SiteGroups.GetByName("Member");
context.Load(memGroup);
var users = memGroup.Users;
context.Load(users);
context.ExecuteQuery();
foreach (var user in users)
{
Principal principal = web.EnsureUser(user.LoginName);
var folder = web.GetFolderByServerRelativeUrl("/Shared Documents");
var roleDef = context.Site.RootWeb.RoleDefinitions.GetByType(RoleType.None);
var roleBindings = new RoleDefinitionBindingCollection(context) { roleDef };
folder.ListItemAllFields.BreakRoleInheritance(true, false);
folder.ListItemAllFields.RoleAssignments.Add(principal, roleBindings);
}
那么我到底哪里做错了,如何解决呢?
请参考以下代码:
Folder folder = ctx.Web.GetFolderByServerRelativeUrl("/sites/dev/shared%20documents");
ctx.Load(folder);
ctx.Load(folder.ListItemAllFields);
ctx.ExecuteQuery();
Group groupToRemove = ctx.Web.SiteGroups.GetByName("dev Members");
ctx.Load(groupToRemove);
ctx.ExecuteQuery();
folder.ListItemAllFields.BreakRoleInheritance(true, false);
folder.ListItemAllFields.RoleAssignments.GetByPrincipal(groupToRemove).DeleteObject();
ctx.ExecuteQuery();
参考:
Remove specific user permissions from one folder in Sharepoint online with powershell
我想阻止 sharepoint 中的一组用户(例如:成员)使用 csom 访问 "Shared Documents"。 但是,当我执行我的代码时它不起作用(我上面提到的组中的帐户仍然可以访问我的站点。 有我的代码:
ClientContext context = new ClientContext("https://example.com/sites/Litware");
SecureString password = new SecureString();
foreach (char c in "abcd".ToCharArray()) password.AppendChar(c);
context.Credentials = new SharePointOnlineCredentials("example@example.onmicrosoft.com", password);
var web = context.Web;
context.Load(web);
context.ExecuteQuery();
var memGroup = web.SiteGroups.GetByName("Member");
context.Load(memGroup);
var users = memGroup.Users;
context.Load(users);
context.ExecuteQuery();
foreach (var user in users)
{
Principal principal = web.EnsureUser(user.LoginName);
var folder = web.GetFolderByServerRelativeUrl("/Shared Documents");
var roleDef = context.Site.RootWeb.RoleDefinitions.GetByType(RoleType.None);
var roleBindings = new RoleDefinitionBindingCollection(context) { roleDef };
folder.ListItemAllFields.BreakRoleInheritance(true, false);
folder.ListItemAllFields.RoleAssignments.Add(principal, roleBindings);
}
那么我到底哪里做错了,如何解决呢?
请参考以下代码:
Folder folder = ctx.Web.GetFolderByServerRelativeUrl("/sites/dev/shared%20documents");
ctx.Load(folder);
ctx.Load(folder.ListItemAllFields);
ctx.ExecuteQuery();
Group groupToRemove = ctx.Web.SiteGroups.GetByName("dev Members");
ctx.Load(groupToRemove);
ctx.ExecuteQuery();
folder.ListItemAllFields.BreakRoleInheritance(true, false);
folder.ListItemAllFields.RoleAssignments.GetByPrincipal(groupToRemove).DeleteObject();
ctx.ExecuteQuery();
参考:
Remove specific user permissions from one folder in Sharepoint online with powershell