examples - gwt tutorial
La mejor práctica para almacenar objetos requeridos a nivel mundial en GWT (2)
Estoy comenzando a desarrollar una aplicación GWT en estilo MVP (GWTP) y que utiliza seguridad Spring para autenticación y autorización en el lado del servidor.
En muchas vistas de la aplicación, tengo que habilitar o deshabilitar controles con respecto a una autoridad concedida del usuario actual. Ya tengo un servicio RPC que proporciona acceso a un userDetailsDto que contiene toda la información necesaria.
Ahora mi pregunta: ¿Cuál es el mejor lugar para almacenar al usuario DTO en el lado del cliente?
Dado que los derechos de los usuarios son relevantes en muchos presentadores, tendría que pasarlo por todas partes. Alternativamente, podría establecer una instancia de servicio RPC en cada presentador y volver a solicitar los detalles del usuario cada vez (probablemente en caché en el lado del cliente). Pero no me gusta la idea de tener un servicio RPC de usuario en cada presentador solo para este propósito.
Para ser sincero, prefiero un registro central donde poner el objeto UserDetails y que sea accesible desde cualquier lugar de mi aplicación. ¿Ya existe un registro de este tipo en GWT?
Como en mi ejemplo, a menudo puede verse confrontado con objetos usados horizontalmente. ¿Cómo lidiar con ellos en GWT?
Inyecto un objeto "AppState" en todos los presentadores que necesitan saber cosas como los derechos del usuario conectado, sus preferencias, etc. Prefiero la inyección a una variable estática pública porque se siente más controlada, es más fácil simular en las pruebas, y el tipeo extra me obliga a considerar si cada objeto realmente necesita acceso a los datos globales.
Simplemente almacene su usuario actual en una variable pública estática. Será accesible desde cualquier lugar.