vistas restringir permisos online office niveles lugar los limitar impiden exclusivos este entrada como administrar accesos acceso security sharepoint permissions

security - restringir - Sharepoint: cómo administrar mediante programación los permisos de SPFolder y SPListItem



permisos sharepoint office 365 (2)

Quiero saber si me estoy perdiendo algo. Así es como lo haría: para SPFolder cambiaría los permisos del elemento asociado (SPFolder.Item). Así que supongo que administrar los permisos de SPFolder se reduce a administrar los permisos de SPListItem. Para SPListItem, rompería la herencia de roles con SPListItem.BreakRoleInheritance() y luego trabajaría con RoleAssignments colecciones de RoleAssignments agregando y eliminando roles allí.

Me pregunto si RoleAssignments es la única forma de administrar los permisos de SPListItem (además de la herencia) y existe una forma de administrar permisos individuales sin roles. También existe la propiedad EffectiveBasePermissions, pero no estoy seguro.

Entonces, la pregunta es, ¿hay otras formas (además de la herencia) de administrar los permisos de SPListItem además de la colección RoleAssignments?

@ Edite: también existe AllRolesForCurrentUser, pero supongo que puede obtener la misma información de la propiedad RoleAssignments, por lo que esta es solo por conveniencia.

@Editar: como notas Flo en su respuesta hay un problema con la configuración

folder.ParentWeb.AllowUnsafeUpdates = true;

Y usando BreakRoleInheritance con el argumento de ''falso'' (es decir, sin copiar los permisos del objeto principal).

folder.Item.BreakRoleInheritance(false);

BreakRoleInheritance simplemente no funcionará en la solicitud GET como se esperaría después de permitir actualizaciones inseguras. Presumiblemente, el método restablece AllowUnsafeUpdates a ''falso''.

Una solución que conozco para esto es eliminar manualmente los permisos heredados después de BreakRoleInheritance (verdadero), como este:

folder.Item.BreakRoleInheritance(false); while(folder.Item.RoleAssignments.Count > 0) { folder.Item.RoleAssignments.Remove(0); }

¡Gracias!


Lo tienes muy bien. Creo que RoleAssignments es el único mecanismo para administrar permisos directamente. Aquí hay una publicación que muestra un ejemplo rápido de cómo hacerlo. También usé estas dos publicaciones cuando hice algunas cosas más complicadas.


Esta publicación también será interesante cuando trabaje con el método BreakRoleInheritance (). Se trata de un problema que podría surgir al usar BreakRoleInheritance (falso).