Así que he estado trabajando en una pequeña aplicación web (sitio) para un grupo de amigos y me he dado cuenta de que las cosas deben cambiar. La aplicación tiene dos caras a lo¿Cómo se pueden diseñar las funciones de visitante y administración en una sola aplicación web ASP.Net MVC?
- un lado del lado público que sirve de datos dinámicos a los visitantes y no los administradores, y
- una parte de administración, donde los administradores pueden actualizar o crear los datos dinámicos para ser servido.
Esta aplicación comenzó como un único proyecto de formularios web seccionado por páginas separadas y la seguridad de las carpetas web.config. Luego creció en proyectos separados (MVC admin side y webforms front end). Más tarde tuve que llevarlo a donde está hoy, una única aplicación web con una mezcla de MVC (administrador) y webforms (público), debido a problemas de implementación.
Ahora estoy buscando migrarlo a un solo proyecto MVC. Me gustaría mantener mis funciones administrativas desesperadas desde mi lado público por URL como/Admin y no estoy seguro de cómo hacerlo. He leído muchos temas sobre cómo agrupar controladores en módulos, pero aún no estoy seguro de que sea lo correcto.
- ¿Debo simplemente crear funciones administrativas en línea con el resto de la aplicación pública y determinar si el usuario está conectado o no?
- ¿O debo crear controladores de administración que estén separados de los controladores públicos (EventAdminController vs CalendarController)?
- ¿Qué han hecho otros?
Sugerencias bienvenidas, gracias stackoverflow.
Sí, estoy utilizando el framework ASP.Net MVC de Microsoft. Darryl, ¿dices que coloque mis vistas en una carpeta Admin y la proteja utilizando un web.config (para verificar la seguridad y los roles) o para colocar mis controladores en una carpeta Admin?
Mis suposiciones eran que usted estaba diciendo que coloque los controladores en una carpeta de Admin, por ejemplo debajo de los controladores. Esto aún significaría que HomeController in/Controllers es diferente de HomeAdminController en/Controllers/Admin. En este caso, podría configurar rutas específicas para cada uno, pero no veo cómo protegerlos simplemente colocando un controlador en una carpeta diferente (a menos que use el atributo Autorizar en las acciones).
En cuanto a colocar las vistas en una carpeta diferente, puedo ver cómo eso podría funcionar en teoría. Pero, ¿no se ejecutaría el controlador (en teoría, sin ningún atributo de autorizar) hasta el punto en que se devuelva la vista? Entonces esperaría una redirección o un error. De cualquier manera, no me gustaría ejecutar mi acción de controlador si no puede acceder a la vista, y preferiría no realizar ninguna comprobación previa de acción interna.
No estoy seguro de cómo funcionaría eso con los controladores. Ellos no conocen fronteras. He utilizado este método en el mundo de formularios web y funciona bien. Puedo organizar mis controladores mejor, pero tendría que tener un nombre único en todos los controladores en el proyecto. –
¿Está utilizando ASP.NET MVC Framework que proporciona Microsoft o algún otro framework MVC para ASP.NET? En ASP.NET MVC Framework los controladores están estrechamente vinculados a las vistas de forma predeterminada. para que la url http://www.example.com/admin/something/1/ llame a AdminControler.Something (1) –
también puede usar filtros, áreas, enrutamiento con restricciones de autenticación o contenedores IOC con lógica de autenticación para realizar este tipo de funcionalidad –