Caros colegas, a pouco tempo desenvolvi uma
aplicação para Web em JSP e HSQLDB, a aplicação está funcionando normalmente,
mas a pouco tempo tive que criar um sistema de validação de senha, o sistema
está funcionando, validando normal. Eu criei um arquivo chamado
"ValidaLogin.jsp", ele tem toda a regra de validação, quando o usuário é
validado no banco de dados, ele pega informações do banco e armazena numa
variável de "Sessão", e quando não é validado no banco, as variáveis de "Sessão"
não setadas para "null" e "false", e foi também inserido em cada página jsp, uma
rotina de validação, para que o usuário não entre em locais restritos. O meu
problema é que se o usuário tenta entrar em uma página quando não estiver
logado, ele recebe uma mensagem JasperException, mas se ele tenta logar e não
obtem sucesso e depois tenta entrar em alguma página ele recebe mensagem
informando que ele deve primeiramente efetuar o login para prosseguir no uso das
páginas. O problema é, porque quando ele tenta logar e o login ou senha está
inválido, e ele tenta entrar em alguma página restrita e ele recebe a mensagem
informando que ele deve efetuar o login, e quando ele não tenta efetuar o login
e vai direto à alguma página ele recebe uma exceção JasperException? Veja abaixo
minha aplicação:
Obrigado a Todos.
Halex Maciel
Cuiabá-MT
Minha página
"ValidaLogin.jsp":
<%@ page import="java.sql.*" %>
<%@ page import="javax.servlet.http.*" %> <% // //Processo de Validação de login // //Pega os parametros do formulário de solicitação de login String stremail = request.getParameter("txtemail"); String strsenha = request.getParameter("txtsenha"); String mensagem = ""; //
try { //Cria a instancia do banco de dados Class.forName("org.hsqldb.jdbcDriver"); } catch (Exception e){ mensagem += "Classe do banco de dados não foi localizada" + e; } try
{
//Cria a conexão com o banco de dados Connection Conn = DriverManager.getConnection ("jdbc:hsqldb:hsql://localhost:8887:dblabfic","sa",""); Statement stmt = Conn.createStatement();
//Executa a consulta
String sql = "SELECT * From Pessoas WHERE email = '" + stremail + "' AND senha='" + strsenha + "'"; ResultSet rs = stmt.executeQuery(sql); if (rs.next()) { int Tipo = rs.getInt("direito"); //Redireciona baseado nos direitos de usuário if (Tipo == 1) { session.setAttribute("EstaLogado","true"); session.setAttribute("eAdmin","true"); session.setAttribute("msg","Logado"); response.sendRedirect("Admin/administracao.jsp"); } else { session.setAttribute("EstaLogado","true"); session.setAttribute("eAdmin","false"); session.setAttribute("msg","Logado"); response.sendRedirect("index2.jsp"); } } //Caso o login venha falhar ou login inválido else { session.setAttribute("msg","Login ou senha inválido!"); session.setAttribute("EstaLogado","false"); session.setAttribute("eAdmin","false"); response.sendRedirect("index.jsp?msg=Login%20ou%20Senha%20Inválido"); } } catch (SQLException ex) { mensagem += "Problemas com SQL" + ex; } %> Este é o cabeçalho de todas as páginas
restritas:
<%
// Verifica session se é nula, caso seja
redireciona para página de login com parametro de mensagem
if (session.getAttribute("EstaLogado") == null) response.sendRedirect("index.jsp?msg=Por%20%20favor,%20efetue%20seu%20login."); else { // Verifica o conteúdo é falso ou verdadeiro, se verdadeiro ele habilita navegação na página String logado = session.getAttribute("EstaLogado").toString(); if (!(logado == "true")) response.sendRedirect("index.jsp?msg=Por%20%20favor,%20efetue%20seu%20login."); } %> |