Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Login: Session, variável global ou Classe?

$
0
0
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?

Viewing all articles
Browse latest Browse all 14190