2011-12-04 9 views
6

que estoy tratando de averiguar la forma correcta de poner en práctica y el código de los siguientes patrones utilizando el desing, o una solución orientada al objeto bueno:patrón de diseño para poner en práctica un conjunto de permisos para un usuario

Hay una clase de usuario que puede contener un conjunto variable de permisos, cada uno le permite realizar diferentes acciones en la aplicación. La idea es poder decirle a un determinado objeto del usuario, por ejemplo, eliminar un pedido, si tiene algún permiso que le permita hacerlo, hacerlo y, de no ser así, hacer una excepción.

Si alguien tiene un lugar donde leer sobre esto, también es útil. gracias

Respuesta

0

Si un usuario puede tener múltiples permisos, cada permiso permite diferentes tareas de ejecución, entonces es posible que desee echar un vistazo a decorador patrón.

aunque depende mucho de sus requisitos.

5

Existen funciones incorporadas para obtener permiso en C# /. NET.

Los requisitos de acceso de una función se establecen mediante la clase PrincipalPermissionAttribute, o dentro del código con PrincipalPermission. Para evitar un método de ser llamado a menos que el usuario actual es un miembro de la función Administrators, el siguiente atributo se utiliza (muestra de MSDN):

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")] 
static void CheckAdministrator() 
{ 
    Console.WriteLine("User is an administrator"); 
} 

Ambas estas comprobaciones contra la identidad actual del subproceso de llamada. Entonces, lo que debe hacer es implementar la interfaz IPrincipal para permitir que sus usuarios se configuren como la identidad del subproceso. Luego puede usar .NET PrincipalPermission estándar para verificar la seguridad. Funciona exactamente como lo desea; si no se cumple la demanda de seguridad, se genera una excepción.

+0

Prefiero este tipo de enfoque Centrado en Principios también, recomendaría que vayan un paso más allá y creen objetos de permisos declaritivos y/o imperitivos para encapsular las aserciones PrincipioPermission. Esto evitará que los principales detalles se filtren en el resto de la base de código. Tenga en cuenta que no tiene que comprar en la infraestructura CAS más grande para usar este patrón. Una advertencia, sin embargo, el modelo de seguridad de WCF es muy diferente, así que ignórense si es a dónde van. Aquí hay una muestra del patrón. http://www.smelser.net/blog/post/2009/03/09/Why-do-I-need-your-Permission.aspx – JoeGeeky

+0

@JoeGeeky parece que es lo que estoy buscando, pero ¿cómo lo hago? establezco los permisos de un usuario? Además, estos usuarios y grupos de usuarios no tienen nada que ver con los usuarios/grupos de usuarios de Windows UAC. – mbmihura

Cuestiones relacionadas