Soy nuevo en Caliburn.Micro y me pregunto cuál es la mejor manera de manejar los ciclos de inicio de sesión/cierre de sesión de usuario en mi aplicación. Vi algunas sugerencias en línea para implementar esto usando una Vista de Shell vacía que cambia entre el LoginView y la vista principal de la aplicación, cada una con un ViewModel personalizado, por supuesto.¿Cómo manejo el inicio/cierre de sesión en Caliburn.Micro?
Realmente no me gusta esta solución, porque para mí son 2 ventanas separadas con propiedades muy diferentes (Título, Icono, Tamaño) y parece una solución sucia dos cambiar una ventana para parecerse a la otra. Otro problema es que la ventana de inicio de sesión proviene de una biblioteca de utilidades que no controlo y que no utiliza Caliburn.Micro, es una ventana antigua que me da un evento cuando el usuario hace clic en "Iniciar sesión".
También vi sugerencias para mostrar este cuadro de diálogo en el método de arranque Bootstrapper, pero el problema que veo es que el usuario puede elegir "Cerrar sesión" de la aplicación que debería mostrar el cuadro de diálogo Iniciar sesión nuevamente. Me parece incorrecto manejar el cambio entre las Vistas en el Bootstrapper.
Lo que me gustaría es tener algún tipo de ApplicationViewModel o ApplicationController que funcione como un Caliburn Conductor, pero en lugar de cambiar entre Views dentro de una ventana, debe cambiar entre LoginWindow y MainWindow y también debe manejar el cierre de la toda la aplicación (que también requiere un cierre de sesión). En Activación, mostraría la ventana de inicio de sesión, manejaría el evento de inicio de sesión y luego cambiaría a la ventana principal (Shell). Si el usuario elige "LogOut", el evento volverá a aparecer en el ApplicationViewModel/Controller, que desactivaría/cerraría MainWindow, realizaría Logout y luego volvería a mostrar el LoginDialog. Un evento Similar cerraría el cierre de sesión, pero luego cerrará toda la aplicación.
Así que mis preguntas son:
- ¿Qué piensa acerca de esta solución y tienes otra/mejor?
- ¿Cómo implemento esto? ;-)
¡Muchas gracias!
Cuando dice "ventana viejo y simple" hacer ¿WPF o WinForms? ¿La ventana de inicio de sesión también hace el trabajo real de autenticar a un usuario o tendría que manejar el evento "Iniciar sesión" y hacer eso? – Kioshiki
ventana de WPF y genera un evento de inicio de sesión que administro utilizando un servicio de autenticación que obtengo de mi contenedor de IoC. – aKzenT