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>&nbsp;</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] 
-------------------------------------------------------------------------

Responder a