Boa noite,
Estou utilizando filter para filtrar as requisições porém está permitindo acessar as páginas mesmo sem o usuário estar logado.
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import beans.Usuario;
import dao.DaoUsuario;
@WebFilter(urlPatterns={"/*"})
public class FilterAutenticacao implements Filter{
//faz alguma coisa quando a aplicação é derrubada
@Override
public void destroy() {
}
//intercepta todas as requisições
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
String urlParaAutenticar = req.getServletPath();
// retorna null caso não esteja logado
Usuario usuario = (Usuario) session.getAttribute("usuario");
if (usuario == null && !urlParaAutenticar.equalsIgnoreCase("/pages/ServletAutenticacao")){ // usuário não logado
RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp?url="+urlParaAutenticar);
dispatcher.forward(request, response);
return;// para o processo para redirecionar
}
// executa as ações do request e response
chain.doFilter(request, response);
}
// executa alguma coisa quando a aplicação é iniciada
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
package servlet;
import java.io.IOException;
import java.net.InetAddress;
import javax.servlet.RequestDispatcher;
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.DaoLogin;
import dao.DaoOcorrenciaAcesso;
import beans.OcorrenciaAcesso;
import beans.Usuario;
@WebServlet("/ServletAutenticacao")
public class ServletAutenticacao extends HttpServlet {
private static final long serialVersionUID = 1L;
private DaoLogin daoLogin = new DaoLogin();
public ServletAutenticacao() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if(Boolean.parseBoolean(request.getParameter("deslogar"))){
//adicionar usuario logado na sessao
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
session.invalidate();
//redireciona para login novamente
response.sendRedirect("index.jsp");
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String login = request.getParameter("login");
String senha = request.getParameter("senha");
String ipDaMaquina = InetAddress.getLocalHost().getHostAddress();
//System.out.println(ipDaMaquina);
//nome da maquina.
String nomeDaMaquina = InetAddress.getLocalHost().getHostName();
//System.out.println(nomeDaMaquina);
String url = request.getParameter("url");
// neste momento pode ser feito uma validação no banco de dados
try {
if (login != null && !login.isEmpty() && senha != null
&& !senha.isEmpty()) {
if (daoLogin.validarLogin(login, senha)) {
// se o login foi bem sucedido
Usuario usuario = new Usuario();
usuario.setLogin(login);
usuario.setSenha(senha);
OcorrenciaAcesso ocorrenciaAcesso = new OcorrenciaAcesso();
ocorrenciaAcesso.setLogin(login);
ocorrenciaAcesso.setIpDaMaquina(ipDaMaquina);
ocorrenciaAcesso.setNomeDaMaquina(nomeDaMaquina);
DaoOcorrenciaAcesso daoOcorrenciaAcesso = new DaoOcorrenciaAcesso();
daoOcorrenciaAcesso.salvarOcorrenciaAcesso(ocorrenciaAcesso);
// adiciona usuário logado na sessão
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
session.setAttribute("login", usuario);
// redireciona para o sistema e autoriza
RequestDispatcher dispatcher = request
.getRequestDispatcher("pages/usuario.jsp");
dispatcher.forward(request, response);
//gravar log de acesso
} else {// acesso negado
RequestDispatcher dispatcher = request
.getRequestDispatcher("acessonegado.jsp");
dispatcher.forward(request, response);
}
} else {// se o login falhou
// redireciona para login novamente
RequestDispatcher dispatcher = request
.getRequestDispatcher("/index.jsp");
dispatcher.forward(request, response);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package servlet;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.servlet.RequestDispatcher;
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.Part;
import javax.xml.bind.DatatypeConverter;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.tomcat.util.codec.binary.Base64;
import beans.Ocorrencia;
import beans.Usuario;
import dao.DaoUsuario;
/**
* Servlet implementation class ServletUsuario
*/
@WebServlet("/salvarUsuario")
public class ServletUsuario extends HttpServlet {
private static final long serialVersionUID = 1L;
private DaoUsuario daoUsuario = new DaoUsuario();
Ocorrencia ocorrencia = new Ocorrencia();
public ServletUsuario() {
super();
}
private String acaoGet;
private String sessionUsuario;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
String acao = request.getParameter("acao") != null ? request.getParameter("acao"): "listartodos";
String user = request.getParameter("user");
acaoGet = acao;
if (acao != null && acao.equalsIgnoreCase("listartodos"))
{
RequestDispatcher view = request
.getRequestDispatcher("/pages/usuario.jsp");
request.setAttribute("usuarios", daoUsuario.listar());
view.forward(request, response);
}
else if (acao != null && acao.equalsIgnoreCase("delete")
&& user != null) {
daoUsuario.delete(user);
request.setAttribute("msg", "Usuário excluído com Sucesso!");
//Tipo de mensagem
request.setAttribute("tipo", "success");
// daoUsuario.salvarOcorrencia(ocorrencia);
// daoUsuario.deleteOcorrencia(ocorrencia);
daoUsuario.acaoPagina(acaoGet);
daoUsuario.recuperarID();
daoUsuario.recuperarNome();
daoUsuario.recuperarUsuario(sessionUsuario);
daoUsuario.salvarOcorrencia(ocorrencia);
RequestDispatcher view = request
.getRequestDispatcher("/pages/usuario.jsp");
request.setAttribute("usuarios", daoUsuario.listar());
view.forward(request, response);
} else if (acao != null && acao.equalsIgnoreCase("editar")
&& user != null) {
Usuario usuario = daoUsuario.consultar(user);
RequestDispatcher view = request
.getRequestDispatcher("/pages/usuario.jsp");
request.setAttribute("user", usuario);
view.forward(request, response);
} else if (acao != null && acao.equalsIgnoreCase("ocorrencia")) {
RequestDispatcher view = request
.getRequestDispatcher("/pages/ocorrencia.jsp");
request.setAttribute("ocorrencias",
daoUsuario.listarOcorrencia(user));
view.forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String acao = ("SalvarUsuario");
String usuarioSessao = request.getParameter("usuarioSessao");
sessionUsuario = usuarioSessao;
boolean podeInserir = true;
String msg = null;
String id = request.getParameter("id");
String login = request.getParameter("login");
String nome = request.getParameter("nome");
String senha = request.getParameter("senha");
Usuario usuario = new Usuario();
usuario.setId(!id.isEmpty() ? Long.parseLong(id) : null);
usuario.setLogin(login);
usuario.setNome(nome);
usuario.setSenha(senha);
Ocorrencia ocorrencia = new Ocorrencia();
try {
if (id == null || id.isEmpty() && podeInserir) {
daoUsuario.salvar(usuario);
//Mensagem salvo com sucesso
request.setAttribute("msg", "Usuário salvo com Sucesso!");
//Tipo de mensagem
request.setAttribute("tipo", "success");
daoUsuario.acaoPagina(acao);
daoUsuario.recuperarID();
daoUsuario.recuperarNome();
daoUsuario.recuperarUsuario(usuarioSessao);
daoUsuario.salvarOcorrencia(ocorrencia);
RequestDispatcher view = request
.getRequestDispatcher("/pages/usuario.jsp");
request.setAttribute("usuarios", daoUsuario.listar());
view.forward(request, response);
}
if (id != null && !id.isEmpty()) {
daoUsuario.atualizar(usuario);
request.setAttribute("msg", "Usuário editado com Sucesso!");
//Tipo de mensagem
request.setAttribute("tipo", "success");
daoUsuario.acaoPagina(acaoGet);
daoUsuario.recuperarID();
daoUsuario.recuperarNome();
daoUsuario.recuperarUsuario(usuarioSessao);
daoUsuario.salvarOcorrencia(ocorrencia);
RequestDispatcher view = request
.getRequestDispatcher("/pages/usuario.jsp");
request.setAttribute("usuarios", daoUsuario.listar());
view.forward(request, response);
}else{
RequestDispatcher view = request
.getRequestDispatcher("/pages/usuario.jsp");
request.setAttribute("usuarios", daoUsuario.listar());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}