Duvida com session

4 respostas
joaosavio
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession)fc.getExternalContext().getSession(true);
session.setAttribute("usuario", usuario);

Se quando o usuario faz o login eu faço isso, eu consigo entrar em duas máquinas com o mesmo usuario, Como fazer para restringir isso?

Abraços

4 Respostas

Giulliano

Uma solução seria colocar o usuário no nível de aplication e não de session. Assim quando realizar o login vc pode verificar se ele já esta logado.

valews…

joaosavio

nao tem como usar session?

Abraços e valeu

cristianosanchez

O ServletContext é um objeto único para cada instância de aplicação web (por isso é também conhecido como application context). Você não deve colocar o usuário neste nível, está certo em colocá-lo na session pois a sessão deste cliente terá informações pertinentes apenas a este cliente (como por exemplo o atributo “usuario”)

A session é criada e vinculada a um determinado cliente (ex. browser). Cada request do cliente envia o ID da sessão e desta forma o container web identifica a sessão (objeto HttpSession) deste usuário (deste cliente). Ou seja, em máquinas diferentes, você terá objetos de sessão diferente.

O fato de um mesmo usuário (ex. o usuário Fiodór) logar em duas máquinas diferentes você deve controlar, por exemplo, buscando um status para este usuário numa tabela ou em um hashmap na memória (esta sim poderia ficar no contexto)…

Giulliano

só não recomendo por essa lógica integrada com banco de dados…é uma péssima prática. ( no meu ponto de vista )

Criado 28 de agosto de 2008
Ultima resposta 28 de ago. de 2008
Respostas 4
Participantes 3