Tengo una pregunta general sobre el mejor enfoque para autorizar elementos de la interfaz de usuario para Roles de aplicación. Lo que quiero decir es que un administrador puede ver botones, elementos de menú, etc., que un usuario normal no puede ver. ¿Cuál es la mejor práctica para esto?Autorización de elementos de la interfaz de usuario en .NET WinForms
Me doy cuenta de que podría haber varias pantallas basadas en Role (una pantalla de administrador, la misma pantalla duplicada para el usuario, etc.), que definitivamente parece exagerada. También deseo mantener Separation of Concern para que mi código de autorización no se entremezcle con la funcionalidad de visualización. En otras palabras, quiero evitar:
if(current_user.IsInRole("administrator"))
button.Enabled = true;
He estado buscando en los aspectos con PostSharp, que parece casi exactamente lo que quiero hacer, pero no parece extenderse lógicamente a la interfaz de usuario.
Estoy seguro de que me falta algo, ¿qué es?
Gracias -
Domenic -.. gracias, la SetPropertyIfInRoleAttribute (o SetPropertyByRole Atributo) parece un buen término medio, y a partir de este momento estoy inclinado de esa manera. Gran explicación, gracias por aclarar. Ahora veo, ¡lambda en un constructor de Atributo sería muy útil! – grefly
Como seguimiento, lo que encontré con PostSharp fue que no pude obtener el atributo personalizado porque estoy decorando las clases .NET framework (cuadros de texto, etc.) en un nivel de instancia. Creo que me encontraré con el mismo problema otra vez. Aunque proporcionó una excelente respuesta a la pregunta original, una respuesta a menudo lleva a dos preguntas más ... = D – grefly