Login, getSession().setAttribute().

Buenas a todos. Estoy intentando hacer un proyecto para la universidad. El proyecto trata sobre hacer una app similar al comportamiento de YouTube. Mi problema es que cuando inicio sesion en la aplicación debo guardar el ID del usuario que se ha logueado para poder usarlo en las diferentes ventanas (Pág_Perfil_Propio, Pág_Video_Propio, etc…). He intentado utilizar la función getSession().setAttribute(“admin”,administrador); Siendo Administrador un objeto que contiene varios String (nombre, apellido, etc) y varios int (ID, nVisitas, etc). Cuando intendo coger este objeto mediate getSession().getAttribute(“admin”), le hago un casting al tipo Administrador y de ahí poder coger el ID. De esta forma me da error, de tipo null. Y no sé por que puede ser (Soy novato en Vaadin).

Aquí utilizo el getSession().setAttribute(“admin”,administrador)

diagramaclasesbd.Administrador administrador = diagramaclasesbd.AdministradorDAO.createAdministrador();
				for(int i = 0; i< listaAdmin.size()-1; i++) {
					administrador = listaAdmin.get(i);
					if(nombre.equals(administrador.getNombre()) && pass.equals(administrador.getPassword())) {
					
						getSession().setAttribute("admin", administrador);
						UI.getCurrent().getNavigator().navigateTo("PagIR");
						
					}
			
				}

Y aquí el getSession().getAttribute(“admin”)
public void cargarPerfilPropioR() throws PersistentException {

	Administrador admon = diagramaclasesbd.AdministradorDAO.createAdministrador();
	admon = (Administrador)getSession().getAttribute("admin");
	int numeros = admon.getORMID();
	
	String numero = String.valueOf(numeros);
	nVisitas.setValue(numero);
}

Gracias de antemano.
Un saludo.

In your code examples you are setting attribute “admin” and trying to get attribute “userID”.

Tatu Lund:
In your code examples you are setting attribute “admin” and trying to get attribute “userID”.

Yes,
I forgot to change it

Hola Alfonso,

En mi caso yo tengo definido una Clase Usuario que tiene diferentes Perfiles.
Basicamente una vez que tengo el login lo que hago es

UI.getCurrent().getSession().setAttribute(“usuario”, usuario);
Y luego como decis vos, haces un cast
Usuario usuario = (Usuario) UI.getCurrent().getSession().getAttribute(“usuario”);

y al usuario le pedis lo que necesitas.
Avisa si necesitas mas ayuda.
Saludos

Matias Gutierrez:
Hola Alfonso,

En mi caso yo tengo definido una Clase Usuario que tiene diferentes Perfiles.
Basicamente una vez que tengo el login lo que hago es

UI.getCurrent().getSession().setAttribute(“usuario”, usuario);
Y luego como decis vos, haces un cast
Usuario usuario = (Usuario) UI.getCurrent().getSession().getAttribute(“usuario”);

y al usuario le pedis lo que necesitas.
Avisa si necesitas mas ayuda.
Saludos

He intentado hacer lo que tienes tu, pero aún así me coge un null cuando intento recuperar el ID del objeto. Hago las navegaciones entre ventanas con navigator: UI.getCurrent().getNavigator().navigateTo(“PagIR”); No sé si eso perjudica o impide de alguna forma guardar algo en la sesion.

Alfonso,

Basicamente una vez que tengo la rta efectuada con las credenciales yo lo proceso asi:

if(usuario.getPerfil().perfil().equalsIgnoreCase("administrador")){
			UI.getCurrent().getNavigator().navigateTo(ViewAdministrador.NAME);
			return;
		}

y Luego en mi vista

@Override
	public void enter(ViewChangeEvent event) {
		
		Notification.show("Vista administrativo");
		Usuario usuario = (Usuario) UI.getCurrent().getSession().getAttribute("usuario");		 	
		this.getViewAdministradorEncabezado().getLblBienvenida().setValue("<strong> Bienvenido:<strong> " + usuario.getApellido()+", "
				+usuario.getNombre()+"<br> Perfil:"+usuario.getPerfil().perfil());
	}

Para todo esto utilizo MVP. No afecta pero ordena mucho el codigo.
Abrazo

Matias Gutierrez:
Alfonso,

Basicamente una vez que tengo la rta efectuada con las credenciales yo lo proceso asi:

if(usuario.getPerfil().perfil().equalsIgnoreCase("administrador")){
			UI.getCurrent().getNavigator().navigateTo(ViewAdministrador.NAME);
			return;
		}

y Luego en mi vista

@Override
	public void enter(ViewChangeEvent event) {
		
		Notification.show("Vista administrativo");
		Usuario usuario = (Usuario) UI.getCurrent().getSession().getAttribute("usuario");		 	
		this.getViewAdministradorEncabezado().getLblBienvenida().setValue("<strong> Bienvenido:<strong> " + usuario.getApellido()+", "
				+usuario.getNombre()+"<br> Perfil:"+usuario.getPerfil().perfil());
	}

Para todo esto utilizo MVP. No afecta pero ordena mucho el codigo.
Abrazo

Muchas gracias por tu atención. Si va como tu me dijiste, mi priblema era que declaraba con navigator.add todas las pantallas de mi app en el MyUI, y entonces me cogia los valores NULL ya que aún no había cargador al usuario en la sesión.

Buenisimo!! Saludos!