Ol�
Voc� deve estar usando um objeto Connection p�blico. Quando o segundo
usu�rio se conecta, mata a conex�o do promeiro.
[]s
Luca
----- Original Message -----
From: "jspdeveloper" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, July 25, 2001 10:30 AM
Subject: [java-list] jsp : como saber se um usuario jah esta autenticado em
um sistema x?
> Pessoal,
>
> meu esquema de autenticacao em uma pagina , com login e senha, armazena na
> sessao o identificador do usuario bem como outras informacoes relevantes.
Eu
> tambem gravo o id da sessao do usuario no banco de dados para garantir uma
> certa seguranca.
> Este meu sistema eh comum para varios usuarios. Eh um formulario comum a
> todos.
> Mas quando um usuario esta logado, e outro tenta se autenticar, este
> consegue e o outro fica a ver navios. isto eh, ele eh desconectado do
> sistema.
>
> eu pensei em criar uma variavel boolena para indicar que o usuario esta
> conectado, mas caso o usuario saia sem efetuar logoff, esta variavel iria
> permanecer com o valor true.
>
> Alguem tem ideia de como fazer algo para que , quando um usuario estiver
> conectado e outro tentar se conectar, este receber uma mensagem de que jah
> existe um usuario usando o sistema.
>
> grato pela atencao.
>
>
>
>
>
>
>
> ------------------ login.jsp
>
>
> <%@ page import="java.sql.*,java.util.*,java.security.*,sun.misc.*"
> session="false"%>
> <%
>
> /*
> ESTA PAGINA NAO EXIGE QUE SEJA AUTENTICADA
> ESTA PAGINA EXECUTA FUNCOES DE VALIDACAO QUE CRIAM OS DADOS NECESSARIOS
> PARA QUE AS PAGINAS POSTERIORES POSSAM SER USADAS ATRAVES DE AUTENTICACAO
> */
>
>
> /*
> a pagina de login (esta) coloca na sessao o tipo de usuario.
> isto eh necessario para a criacao de menus personalizados para cada tipo
de
> usuario
> */
>
> // Conexao com RESIN
> Connection con =
> com.caucho.sql.DBPool.getPool("xurumelasConnection").getConnection();
> // >>>
>
> Statement stmt;
> stmt=con.createStatement();
> ResultSet rs = null;
> String queryInsert= new String();
> String query= new String();
>
> %>
> <%
>
> String idUser = new String(); // id do usuario . sera utilizado pra
> atualizar o banco de dados.
> String nome = new String(); // nome do usuario. sera utilizado na sessao
> para dar boas vindas para o usuario! :)
> String login = new String();// email veio do form . o email eh o login
name
> do usuario
> String senha = new String(); // senha que veio do form
> String hashLocal = new String(); // hash(md5) da senha q veio do form
> String hashDB = new String(); // hash armazenado no banco de dados. eh
> utilizada para comparar com o hash gerado na autenticacao.
> boolean multiusuario = false; // usuario nao eh multiusuario por default
> Integer tipoTemp = null;
> String tipoParaSessao = null; // tipo do usuario . importante para fazer o
> encaminhanto para o menu correto. eh obtida da col tp_usuario tabela
usuario
> int tipo = 0; // para ser usado nesta pagina. o tipo para sessao eh porque
> putValue da session soh aceita string
> String sessionID = new String(); // session criada caso usuario seja
> validado. sera incluida na coluna sessionID da tabela usuario
>
> // nota: a session sera sempre atualizada do banco de dados toda vez que
o
> usuario tiver sucesso na autenticacao.
>
> // o valor inicial da sessionID no banco de dados eh nulo, pois na
> aprovacao do pre-cadastro eh feita a validacao e insercao de todas as
> colunas
> // da tabela usuario.
> // o hash armazenado na tabela usuario , foi inicialmente carregado
atraves
> de uma senha inicial que o sistema gerou quando efetuou a
> // aprovacao do usuario
>
>
> %>
> <%
> // parametros vindos do formulario da pagina formulario_login.jsp
> login=request.getParameter("email");
> senha=request.getParameter("senha");
> %>
> <%
> // verifica se parametros sao validos
>
> boolean continuar = false;
> boolean achouEmail = false;
> boolean hashesIguais = false;
>
> if ( (login!=null)&&(senha!=null) )
> {
> if ( (login.length()>5)&&(senha.length()==8)) // o usuario digitou um
> email e entrou com a senha com tamanho de 8 caracteres
> {
> continuar=true;
> }
> }
>
>
>
> if (continuar)
> {
> // verifica se email existe
> // retorna hs_senha, id_usuario, nm_usuario e tp_usuario
>
> query = "select
>
id_usuario,nome_do_usuario,hash_senha_do_usuario,tipo_de_usuario,multiusuari
> o_usuario from usuario where situacao_do_usuario='n' AND
> email_do_usuario='"+login+"'"; //verifica se email existe
>
> rs= stmt.executeQuery(query); //pesquisa por email do usuario
> #####################
> achouEmail = rs.next();
> if (achouEmail)
> {
>
> idUser = rs.getString("id_usuario");
> nome = rs.getString("nome_do_usuario");
> hashDB = rs.getString("hash_senha_do_usuario");
> tipoTemp = Integer.valueOf(rs.getString("tipo_de_usuario"));
> multiusuario = rs.getBoolean("multiusuario_usuario"); // 1=true,
0=false
> tipo = tipoTemp.intValue();
> tipoParaSessao = tipoTemp.toString();
>
> // gera hash da senha q veio do form
> byte[] inputBytes = senha.getBytes("UTF8");
> MessageDigest md5 = MessageDigest.getInstance("MD5");
>
> md5.update(inputBytes);
> byte[] digest = md5.digest();
>
> BASE64Encoder encoder = new BASE64Encoder();
> hashLocal = encoder.encode(digest);
>
>
> // compara os hashes
> if ( hashLocal.compareTo(hashDB)==0 )
> {
> //hashes sao iguais
> hashesIguais =true;
> }
> }
>
>
> %>
> <% } // if continuar
> else
> {
>
> con.close();
>
> %>
> <jsp:forward page="formulario_loginErro.jsp" />
> <% } // else continuar%>
> <html>
>
> <head>
> <title>sistema xyz</title>
> <meta http-equiv="pragma" content="no-cache"><meta
> http-equiv="Cache-Control" content="no-cache">
> <meta http-equiv="expires" content="sat, 04 dec 1993 21:29:02 gmt">
> <meta name="GENERATOR" content="Microsoft FrontPage 3.0">
> </head>
>
> <body>
>
> <p align="center"><font face="Arial" size="3" color="#FF0000">Validacao de
> login e senha
> do usuario</font></p>
>
> <p align="center"><font face="Arial" size="3" color="#FF0000">Esta p�gina
> cria a sessao
> do usuario e encaminha para a sua pagina de menu</font></p>
>
> <p align="center"><font face="Arial" size="3"
> color="#FF0000"><%=hashesIguais%></font></p>
> <% if (hashesIguais) //hashesIguais
> {
>
> // cria sessao para usuario e armazena no banco de dados na tabela
usuario
> de acordo com o id usuario
> HttpSession session = request.getSession(true);
> session.putValue("idUser",idUser);
> session.putValue("tipo",tipoParaSessao);
> session.putValue("nome",nome);
>
>
> query = "UPDATE usuario SET "+
> " sessao_do_usuario='"+session.getId()+"' "+ //valor da session id
em
> string
> " where id_usuario=" + idUser;
>
> stmt.executeUpdate(query);
>
>
>
>
> %>
> <%
> // redireciona usuario para menu admin,consultor ou usuario
>
>
> switch(tipo)
> {
> case 1: //admin
> %>
> <jsp:forward page="menu_admin.jsp" />
> <% break;
> case 2://consultor
> %>
> <jsp:forward page="menu_consultor.jsp" />
> <% break;
> case 3://usuario informante
> %>
> <% if (multiusuario)
> {
> %>
> <jsp:forward page="menu_multiusuario.jsp" />
> <%
> }
> else
> {
> %>
> <jsp:forward page="menu_usuario.jsp" />
> <%
> }
> %>
> <% break;
>
> default: //pagina login
> %>
> <jsp:forward page="formulario_loginErro.jsp" />
> <%
> } //switch
> %>
>
> <p><%
>
>
> } // if hashes iguais
> else
> {
> con.close();
>
> %> <jsp:forward page="formulario_loginErro.jsp" /> <%
> } // else hashes
>
> con.close();
>
> %> </p>
>
> <p> </p>
> <% if (!achouEmail) {
> %>
> <jsp:forward page="formulario_loginErro.jsp" />
> <%} // if achouemail
> %>
> </body>
> </html>
>
>
>
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
> d�vidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>
>
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------