Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Login: Session, variável global ou Classe?
Pessoal, estou fazendo um sistema de cadastro de clientes e para que um administrador possa tratar um cliente ele precisará estar logado!
Acontece que estou na dúvida de como guardar seu logon de forma tal que fique à disposição em todo o sistema!
Então, eu fiz um formulário "Login e Senha" convencional enviando via Post os dados para um Servlet que vai chamar as consultas de existência e bloqueio de Administrador que estão em uma classe "Admin".
Tudo funciona corretamente.
Eis o servlet:
package controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import dao.admin.AutenticaAdmin;
import model.Admin;
@WebServlet("/LogonServlet")
public class LogonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LogonServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
request.setCharacterEncoding("UTF-8");
String acao = request.getParameter("acao");
String login = request.getParameter("login");
String senha = request.getParameter("senha");
if (acao.equals("logar"))
{
AutenticaAdmin autenticaAdmin = new AutenticaAdmin();
Admin admin = autenticaAdmin.pesquisaAutenticaAdmin (login, senha);
if(admin!=null)
{
HttpSession sessao = request.getSession();
if(admin.getStatus().equals("d"))
{
sessao.setAttribute("admin", admin);
response.sendRedirect("admin/retornos/admin/loginOK.jsp");
}
else
{
sessao.setAttribute("nomeAdmin", admin.getNome());
response.sendRedirect("admin/retornos/admin/loginBloqueado.jsp");
}
}
else
{
response.sendRedirect("admin/retornos/admin/loginERRO.jsp");
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
request.setCharacterEncoding("UTF-8");
//HttpSession sessao = request.getSession();
//String acao = request.getParameter("acao");
}
}
A função abaixo retorna ou um Admin ou null.
autenticaAdmin.pesquisaAutenticaAdmin (login, senha);
O problema é que estou tendo problemas em testar nas páginas se o usuário sta autenticado ou não.
Se não, tranquilo, a própria servlet já redireciona. Mas caso o usuario navegue direto à página, preciso testar.
Então estou fazendo assim nas páginas .jsp
<%@ include file="../../../_global/sessoes.jsp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="model.Admin" %>
<%
if (session.getAttribute("admin")!=null)
{
Admin admin = (Admin) session.getAttribute("admin");
out.println("Olá "+admin.getNome());
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="../_global/_css/estiloSite.css" />
<title><%=tituloSiteAdmin %></title>
</head>
<body>
<div id="topo"> <jsp:include page="../_global/topoAdmin.jsp" /> </div>
<div id="meio"> <jsp:include page="principalConteudo.jsp" /> </div>
<div id="mapa"> <jsp:include page="../_global/mapaAdmin.jsp" /> </div>
<div id="creditos"> <jsp:include page="../_global/creditosAdmin.jsp" /> </div>
</body>
</html>
<% }
else
{
response.sendRedirect("index.jsp");
}
%>
Qual a melhor forma de fazer isso?
Carregando comentários...