Pregunta

Bien, estoy buscando un poco de orientación de arquitectura, mi equipo está teniendo la oportunidad de volver a emitir ciertas decisiones con una nueva característica que estamos construyendo, y quería ver lo que SO pensó :-) Por supuesto, hay ciertas cosas que no estamos cambiando, por lo que la solución debería encajar en este modelo. Es decir, que tenemos una aplicación ASP.NET, que utiliza servicios web para permitir a los usuarios realizar acciones en el sistema.

El problema se presenta porque, como ocurre con muchos sistemas, diferentes usuarios necesitan acceso a diferentes funciones. Algunos roles tienen acceso al botón Y, y otros tienen acceso al botón Y y B, mientras que otro aún solo tiene acceso a B. La mayoría de las veces que veo esto, los desarrolladores simplemente ponen una mezcla de afirmaciones if para tratar. el estado de la interfaz de usuario Mi temor es que si no se controla, esto se convertirá en un lío que no se puede mantener, porque además de poner la lógica de autorización en la GUI, se debe colocar en los servicios web (que se llaman a través de ajax) para garantizar que solo los usuarios autorizados puedan usar ciertos métodos. .

así que mi pregunta es, ¿cómo puede diseñarse un sistema para disminuir las declaraciones aleatorias ad hoc de aquí y allá que verifican roles específicos, que podrían reutilizarse tanto en el código GUI / webform como en el servicio web? código.

Para mayor claridad, esta es una aplicación web ASP.NET, que utiliza formularios web y Script # para la funcionalidad AJAX. No permita que el script # lo despida de su respuesta, no es fundamentalmente diferente de asp.net ajax :-)

¿Fue útil?

Solución

Pasando del grupo tradicional, función o permiso de nivel de operación, hay un impulso a " basado en notificaciones " Autorización, como lo que se entregó con WCF.

Zermatt es el nombre en clave para la clase de Microsoft biblioteca que ayudará a los desarrolladores a crear aplicaciones basadas en notificaciones en el servidor y el cliente. Active Directory se convertirá en uno de los STS que una aplicación podría autorizar en forma simultánea con la suya y con otros servidores estándar de la industria ...

Otros consejos

In Code Complete (pág. 411) Steve McConnell da el siguiente consejo (que Bill Gates lee como un cuento antes de dormir en el comercial de Microsoft).

" utilizado en circunstancias apropiadas, el código controlado por tablas es más simple que la lógica complicada, más fácil de modificar y más eficiente. "

" Puede usar una tabla para describir la lógica que es demasiado dinámica para representarla en el código. "

" El enfoque basado en tablas es más económico que el enfoque anterior [diseño orientado a objetos de memoria] "

Usando un enfoque basado en tablas, puede agregar fácilmente nuevos "usuarios" (como en la idea de modelado de un usuario / agente junto con sus acciones). Es una buena manera de evitar muchos " si & s; Y lo he usado antes para situaciones como la tuya, y mantiene el código limpio y ordenado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top