pessoal,
 
fiz um esquema de seguranca para meu sistema (que eh baseado em jsp).
este esquema esta funcionando perfeitamente e estou eu aqui neste momento agora passando para quem quiser.
 
eh logico q nao eh a solucao para autenticao, nem eh o melhor codigo, nem o mais profissional , mas funcionou para o que eu precisei :)
 
quem tiver alguma ideia de melhoras ou etc para q o codigo fique mais robusto reply-me.
 
este esquema de seguranca utiliza sessions e hashes:
na sessao eu estou colocando o id do usuario e o tipo de usuario (administrador,usuario comum ,etc)
no banco de dados estou armazendo o hash da senha do cara. 
o esquema de autenticacao que fiz compara o hash q esta no banco com o hash do usuario.
o esquema gera este hash para comparar com o que estah no banco, de acordo com o id do usuario.
 
bom... o codigo precisa ser adaptado.
 
em anexo mando a pagina de login e a que faz a validacao do login, cria a secao e redireciona o usuario para a pagina com o perfil do usuario(admin, usuario , etc).
 
 
o codigo abaixo deve ser incluido em todas as paginas q se quer proteger:
 
 
<%
// AQUI SE DEFINE A CONEXAO COM O BANCO DE DADOS.
MANDO DOIS EXEMPLOS DE CONEXAO: UM ATRAVES DO ORION E OUTRA ATRAVES DO RESIN
 
/*
// Conexao com ORION
javax.naming.Context ctx = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("jdbc/mare");
Connection con = ds.getConnection();
OU

// Conexao com RESIN
Connection con = com.caucho.sql.DBPool.getPool("mare").getConnection();
*/
%>
 
 
<%
//  ***********##############  P A G I N A    R E S T R I T A   USUARIO T I P O  X  ######################***********
//
//                               ALGORITMO CRIADO POR [EMAIL PROTECTED]
//                                   - - - - - - - - - - - - - - - - -
 
 
 String sessao_idUsuario = new String();
 String sessao_nmUsuario = new String();
 String sessao_idSessao = new String();
 
 boolean loginSessao=false;
 boolean continuar = false;
 
 session = request.getSession(false);
 
if (session!=null)
{
 
 sessao_idUsuario = (String)session.getValue("idUser");
 sessao_nmUsuario = (String)session.getValue("nome");
 sessao_idSessao = session.getId();
 
 if ((sessao_idUsuario!=null)&&(sessao_idSessao!=null)&&(sessao_nmUsuario!=null))
 {
  if ((sessao_idUsuario.length()>0)&&(sessao_idSessao.length()>0)&&(sessao_nmUsuario.length()>0))
  {
   loginSessao=true;
  }
 }
} // if session
 
if (loginSessao)
{
 // o usuario dever ter sido aprovado para usar o sistema >> fl_pendencia=n
 // a sessao dele deve bater com a sessao armazenada no banco
 // o id tambem deve bater com o id armazenado no banco
 
 query = "SELECT id_usuario FROM usuario WHERE fl_pendencia='n' AND tp_usuario=1 "+  
//    O TIPO DE USUARIO (TP_USUARIO) DEVE SER TROCADO DE ACORDO COM O TIPO DE PAGINA
//  TP= 1 NO MEU CASO SIGNIFICA QUE O USUARIO EH ADMINISTRADOR, TP=3 USUARIO COMUM, TP=2 CONSULTOR 
 " AND id_usuario="+sessao_idUsuario+
 " AND session_id='"+sessao_idSessao+"'";
     
 rs= stmt.executeQuery(query);
 continuar = rs.next();
   
} //loginSessao
 
 if (continuar) // o usuario pode usar a pagina
 {
// ################ F I M    D O   A L G O R I T M O   D E   A U T E N T I C A C A O   D E   P A G I N A ########################
 
%>
 
 
 
AQUI VAI O SEU CODIGO NORMAL , HTML , JSP ETC... EH O CORPO DA PAGINA
 
E NO FINALZINHO DA PAGINA, ANTES DA TAG </BODY>, VOCE DEVERA INSERIR O CODIGO ABAIXO:
 
 
 
<%
// ####################################   FAZ PARTE DA AUTENTICACAO  \/
 } else
 {   // o usuario nao pode usar a pagina

%>
<jsp:forward page="autenticacao_usuario.jsp" />
<% }    // O FORWARDA ACIMA MANDA O CARA NAO AUTORIZADO PARA A PAGINA DE LOGIN DO SISTEMA
// #################################  ATE AQUI  /\
 %>
 
 
 
 
 
 
em anexo tambem mando uma pagina jsp que utiliza este sistema.
 
 
 
 
 

validar_login.jsp

autenticacao_usuario.jsp

menu_admin.jsp

------------------------------ 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