2009-03-11 9 views

Respuesta

3

Voto por ponerlo donde tenga sentido. La mayoría de mis autorizaciones se manejan a través de acciones de controlador de decoración (o incluso algunos controladores) con AuthorizeAttribute, o un atributo derivado de él. En algunos casos, como mis menús, he recurrido a poner la verificación de autorización en el código de vista en sí, en lugar de calcularla en cada controlador y pasar indicadores en ViewData. Hay algunos casos en que ciertos aspectos del modelo solo están disponibles para funciones particulares y en esos casos he recurrido a extender el modelo con métodos que pueden tomar el usuario actual y las funciones y verificar allí.

0

Si tiene que elegir entre M, V o c, la C es el lugar correcto. Pero, recomiendo una arquitectura en la que su aplicación esté contenida en bibliotecas y la interfaz de usuario no sea más que una carilla delgada. Terminas llamando la pila desde el Controlador, pero el código no está en el controlador.

En MVC, el Modelo es solo un modelo, o un "objeto de datos tonto", si se quiere. Está diseñado para mantener el estado y no debe dictar el comportamiento. La Vista es para que el usuario interactúe y también es "tonto"; la vista maneja UI. El controlador es donde se ubica el comportamiento, o es el punto de entrada al comportamiento en el caso donde la lógica de la aplicación está en las bibliotecas. ¿Tener sentido?

+3

Su definición de MVC es incorrecta. El M en MVC es la parte más importante, no es un objeto de datos tonto. El comportamiento debe estar en M, esta es su lógica de negocios. No está claro si la autorización es parte de la lógica comercial. –

0

Modelo.

El controlador es solo para cambiar de forma diferente. La vista es solo para ... ver.

Por lo tanto, debe hacer todos los códigos de autorización en la capa Modelo. Idealmente, todo funcionará bien. De lo contrario, el controlador llevará al usuario a la casilla de inicio de sesión correcta.

1

Creo que la autorización es una preocupación transversal. Debería estar en un lugar: un aspecto que se puede aplicar declarativamente donde sea necesario.

1

¡El controlador!

Su vista solo debe manejar la interfaz de usuario y mostrar Su modelo debe representar los datos en su sistema. Su controlador debe manejar la lógica de cómo funciona el sistema.

La autorización de un usuario implica tomar las credenciales proporcionadas desde la Vista, verificarlas con algún tipo de lista de autorización en el modelo y luego realizar una comprobación.

Esto se realiza en el controlador: Obtener credenciales de usuario de Vista si (compárese con la lista de usuarios en el modelo vuelve al juego) autorizar a los usuarios demás denegar el acceso

Cuestiones relacionadas