javasf@googlegroups.com
[Top] [All Lists]

Re: [javasf] Limitar Login por Usuário

Subject: Re: [javasf] Limitar Login por Usuário
From: Sávio Canuto
Date: Wed, 27 Apr 2011 09:33:16 -0300
Nesse caso é encerrada sim, mas o registro dessa sessão fica registrado no contexto, conforme estamos discutindo, o que impedirá (ou não) do usuário logar novamente, isso vai depender de como o Altieres implementar.

No meu caso eu deixo o cara logar, porém tiro o registro da sessão anterior para o usuário que está tentando logar.

Atenciosamente,

Sávio Canuto de Oliveira Sousa
João Pessoa - Paraíba - Brasil
------------------------------------------------------




Em 27 de abril de 2011 09:18, Carlos Alberto Rodrigues Leite <beto20a@xxxxxxxxx> escreveu:
A sessão não é encerrada quando fecha o browser?


Em 26 de abril de 2011 20:46, Altieres de Matos <altitdb@xxxxxxxxx> escreveu:
Odisley,
 
e como eu saberia que o usuario saiu do sistema?? Ele pode apenas fechar o browser, e não efetuar o logout!
 
Obrigado.
 
Altieres de Matos
 
From: Odisley
Sent: Tuesday, April 26, 2011 7:56 PM
Subject: Re: [javasf] Limitar Login por Usuário
 
Eu faria:
Um managed bean com escopo de aplicação contendo uma lista com usarios logados, no filter verificaria se na lista já existe o usuairio, se tivesse daria a mensagem de que tem usuario conectado. Quando usuario saisse do sistema eu removeria da lista.

Em 26 de abril de 2011 18:02, Altieres de Matos <altitdb@xxxxxxxxx> escreveu:
Obrigado Sávio,
 
vou ver o que faço aqui.
 
Qualquer coisa dou um grito!
 
Abraços!
 
Altieres de Matos
 
Sent: Tuesday, April 26, 2011 5:28 PM
Subject: Re: [javasf] Limitar Login por Usuário
 
Fiz assim:

public classe Filtro implements Filter {

...
HttpServletResponse rp = (HttpServletResponse) response;
HttpServletRequest rq = (HttpServletRequest) request;
ServletContext sc = rq.getSession().getServletContext();

Usuario user = (Usuario) rq.getSession().getAttribute("SYSTEM_USER");

... AQUI FAÇO OUTRAS VERIFICAÇÕES
if (verificarDuplicidadeUsuario(user.getLogin(), idSession, sc)) {
            rp.sendRedirect(rq.getContextPath() + "/view/erros/UsuarioJaLogado.jsf");
}

...

private boolean verificarDuplicidadeUsuario(String login, String id, ServletContext sc) {
        // verificando se o usuario está no escopo de contexto
        String idSession = "";
       
        if (login != null) {
            idSession = (String) sc.getAttribute(login);
            if ((sc.getAttribute(login) != null) && (!idSession.equals(id)))
                return true;
        }
        return false;
    }

} // FIM DA CLASSE FILTRO

No mais isso ai está funcionando para o que eu quero, basta vc adaptar pra vc aí.

Abraço.

Atenciosamente,

Sávio Canuto de Oliveira Sousa
João Pessoa - Paraíba - Brasil
------------------------------------------------------




Em 26 de abril de 2011 15:08, Altieres de Matos <altitdb@xxxxxxxxx> escreveu:
Então eu corro esse risco, mas vamos deixar isso para ultima ocasião!
 
Você diz para eu usar da seguinte maneira:
 
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
ServletContext servletContext = (ServletContext) context.getExternalContext().getContext();
servletContext.setAttribute("id", valor); //Aqui eu armazenaria as informações do cliente
 
Isso aqui já seria outra coisa?
 
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
session.setAttribute("id", valor);
 
As duas funcionariam? Se sim qual a melhor forma?
 
Obrigado.
 
Sent: Tuesday, April 26, 2011 1:57 PM
Subject: Re: [javasf] Limitar Login por Usuário
 
Vendo que você está pensando em usar o banco para fazer isso, já pensou o que têm que ser feito caso venha cair a energia do servidor? Tipo, você atualizou o status do login, e derrepente faltou energia, quando religarem a energia, os status, para alguns usuários ainda estarão ativos, impossibilitando eles logarem novamente. Isso se encaixa no seu problema? No meu sim, foi por isso que colocamos os usuários logados a nível de contexto.

Como precisei compartilhar informações para as diferentes sessões da aplicação, foi rápido e simples fazer isso.

Dá uma olhada nesse material: http://www.cefetrn.br/~ajdsouza/programacao-II/PDF/ServletContext.pdf


Atenciosamente,

Sávio Canuto de Oliveira Sousa
João Pessoa - Paraíba - Brasil
------------------------------------------------------




Em 26 de abril de 2011 13:17, Altieres de Matos <altitdb@xxxxxxxxx> escreveu:
Olá Sávio,
 
a solução que eu desejo não precisa derrubar o usuário, só precisa “não deixar” outro usuário acessar o sistema com um login já autorizado.
 
Creio eu que o Spring iria servir se eu precisasse de regras, mais no momento eu não preciso.
 
Estou estudando uma forma de fazer isso, ontem encontrei um HttpSessionBindingListener que sabe quando um objeto é inserido ou retirado da sessão, pensei em usar ele vinculado com o banco de dados e atualizando o login para ON e OFF, apenas um exemplo.
 
Pelo que li no livro, esse listener vai fazer tudo para mim, ele saberá quando o objeto sair da sessão e vai mudar o login para OFF, e se o objeto entrar na sessão vai configurar o login para ON, irei especificar para ele para fazer isso.
 
Desculpe a ignorância, mais como assim, elevar isso a nível de contexto, talvez isso seja melhor do que com o Listener.
 
Obrigado.
 
Att Altieres de Matos
 
Sent: Tuesday, April 26, 2011 12:47 PM
Subject: Re: [javasf] Limitar Login por Usuário
 
Olá Altieres,

Implementei uma funcionalidade semelhante a isso, porém eu ainda derrubava o usuário que já estivesse logado com aquele login. Como você já pesquisou, o Spring também não me ajudou muito o que me induziu a fazer uma implementação diferente usando um filtro simples. Para minha solução, não dava pra trabalhar colocando informações na sessão do usuário, tive que elevar isso a nível de contexto.

Resolveu tranquilo o que eu queria.

Atenciosamente,

Sávio Canuto de Oliveira Sousa
João Pessoa - Paraíba - Brasil
------------------------------------------------------




Em 26 de abril de 2011 11:50, Altieres de Matos <altitdb@xxxxxxxxx> escreveu:
Zeh,
 
analisei o link que me enviou, muito obrigado.
 
Pesquisei também algo que eu possa limitar o user a somente um acesso por vez com o Spring, mas não encontrei nada.
 
Encontrei bastante material limitando o acesso a regras “ROLE”, mas nada de como eu preciso fazer.
 
Tem alguma dica?? Alguma palavra chave que seja.
 
Obrigado.
 
Altieres de Matos
 
From: Zeh
Sent: Tuesday, April 26, 2011 8:14 AM
Subject: Re: [javasf] Limitar Login por Usuário
 
O SpringSecurity pode ajudar você isso :

http://static.springsource.org/spring-security/site/articles.html



Em 25 de abril de 2011 21:04, altitdb <altitdb@xxxxxxxxx> escreveu:
Boa noite galera,

preciso fazer a seguinte tarefa.

Por exemplo, vou usar o usuário "teste".

Usuário "teste" fez login OK
Usuário "teste" tenta fazer login, se alguém já tiver "usando" o
usuário "teste" o login não é efetuado com sucesso FAIL
Usuário "teste" fez logout OK
Usuário "teste" faz login OK

Alguém pode me dar uma dica de como posso fazer isso??

Estou usando JSF 2.0, Mojarra 2.0.4 e Spring 3.0.5

Obrigado.

Att Altieres de Matos

--
Você recebeu esta mensagem por que é membro do  Javasf
http://groups.google.com/group/javasf

Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
 
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
 
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
<--_|--/Odisley Soares Silva\--|_-->


--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
<Prev in Thread] Current Thread [Next in Thread>