看标题看起来挺绕口,实际上是这样的,在项目中往往会有这样的情况,针对某些用户,他对于list中的其中一个item或者多个item只有Read权限或者其他,这样就不能仅仅是对list赋权限了,就需要利用item来赋权限。
SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite oWebsite = new SPSite(SPContext.Current.Web.Url)) { using (SPWeb web = oWebsite.OpenWeb()) { web.AllowUnsafeUpdates = true; item.BreakRoleInheritance(true);//打断继承 SPRoleAssignmentCollection roleAssignmentCollection = item.RoleAssignments; for (int i = roleAssignmentCollection.Count - 1; i >= 0; i--) { roleAssignmentCollection.Remove(i); } SPRoleAssignment roleAssignment = new SPRoleAssignment((SPPrincipal)spUser);//假定可以拿到一个spuser roleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions["Read"]);//赋read权限 item.RoleAssignments.Add(roleAssignment); item.Update(); web.AllowUnsafeUpdates = false; }
} });
这时,从页面中就可以看到,选中list中的一个item,点击ribbon中的 item permissions按钮。
就会发现,对于某个用户赋予了相应权限。