drg1006 / Gestor-TFG-2022

Proyecto sobre la evolución de una aplicación de gestión de procesos de oferta, búsqueda, asignación y evaluación de los TFG de la carrera de Ingeniería Informática de la UBU.
https://gestor-tfg-2022.herokuapp.com/
MIT License
0 stars 1 forks source link

Manejo de Sesiones con Vaadin #88

Closed drg1006 closed 1 year ago

drg1006 commented 1 year ago

Se esta estudiando como trabajar el manejo de diferentes Sesiones en Vaadin, ya que actualmente se genera con variables globales. Esta forma provoca conflictos entre las sesiones realizadas en distintos navegadores ya que guarda información de otros usuarios.

Lo que queremos es asignar variables a cada una de las sesiones que se creen.

drg1006 commented 1 year ago

La forma en la que se está intentando realizar es mediante VaadinSession, ya que es la más recomendada y usada.

Siguiendo los pasos de User Session, una sesión se debería crear cuando un usuario realiza una petición para abrir una URL, entiendo que al acceder a la pantalla de información, que en nuestro caso es la que esta por defecto, debería iniciarse una sesión.

El problema que tengo es que al intentar acceder a ella me dice que es null, ya que nosotros no iniciamos la aplicación mediante VaadinServlet sino mediante SpringBootServletInitializer. Creo que este es el principal problema al intentar crear una sesión.

drg1006 commented 1 year ago

También se está intentando realizar mediante ServletContext como aparece aquí, pero creo que no sirve pare diferentes sesiones.

drg1006 commented 1 year ago

Se ha probado utilizar ServletContext pero no se modifica cuando se cambia de sesión, por lo que no se puede utilizar ya que hace referencia a atributos de toda la aplicación. Se está investigando cómo realizarlo, sobretodo mediante VaadinSession, aunque seguimos obteniendo null.

Se han encontrado otras aplicaciones que realizan el manejo de sesiones de esta forma pero no he encontrado la solución:

drg1006 commented 1 year ago

Creo que finalmente se ha dado con la solución, al menos en local si que puedo tener varias sesiones abiertas diferentes.

Se ha utilizado finalmente el método

UI.getCurrent().getSession().setAttribute("---", "---");
UI.getCurrent().getSession().getAttribute("---");

Se ha subido a Heroku y me gustaría que comprobaseis si funciona. @alvarag @annuskeras

drg1006 commented 1 year ago

He encontrado un problema a la hora de hacer Log out que estoy intentando solucionar, ya que al pulsar este botón se redirige a la pestaña de InformationView, el problema es que si estás en esta pantalla no se recarga bien la aplicación. Estoy buscando la forma de obtener la clase en la que estamos al acceder una página.

drg1006 commented 1 year ago

En teoría el problema ya está solucionado y la última versión está actualizada en Heroku. Si podéis comprobar su funcionamiento, y funciona bien me decís. @alvarag @annuskeras

alvarag commented 1 year ago

Yo creo que sí funciona bien, pero haré alguna prueba mañana con Ana.

Lo que no he visto que funcione bien es el tema del histórico, puesto que no me sale más que el de TFGs pese a ser admin yo.

drg1006 commented 1 year ago

Se me había olvidado actualizar las pantallas de histórico, ya debería funcionar y está actualizado.