Jump to content
RSN

Servlet Filter

Recommended Posts

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();
 }
}

}
   

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Alisson Hoepers
      Olá pessoal! Para mostrar a lista de um cadastro no meu sistema, eu populo a consulta em um DTO conforme abaixo. Minha pergunta é: Existe uma forma mais simples de popular a consulta na lista do DTO de forma mais simples?
       
      public List<ObjetoDTO> find(Query query) {     @SuppressWarnings("unchecked") List<Object[]> queryResult = query.getResultList(); List<ObjetoDTO> list = new ArrayList<>(); if (queryResult.isEmpty() == false) { for (Object[] item : queryResult) { ObjetoDTO dto = new ObjetoDTO(); dto.setId((Integer) item[0]); dto.setTitulo((String) (item[1])); dto.setDescricao((String) (item[2])); list.add(dto); } } return list; }  
    • By NaPraia
      Beleza pessoal?
       
      seguinte, tenho que desenvolver uma aplicação Java para me comunicar com outro sistema, via Adapter.
      Qual é a melhor forma de fazer isso?
       
      Eu comecei a desenvolver no Eclipse, porém, quando abri o projeto, não coloquei nem com opção de Webservice nem de Maven
       
      E outra dúvida, se instala o Java em servidor? um cara falou isso aqui mas não sei se está zuando.
    • By Luiz Henrique de Sousa
      Estou utilizando rich faces e seu componente JQuery, para realizar formatação de campos decimais, estou utilizando o maskMoney e atribui uma precisão de 3 casas no meu input text, e tenho um campo disabled que é booleano, ele é acionado caso tenha mais coisas associadas a outro item no form abaixo, mesmo sabendo que a função disabled é apenas vísivel ela não faz nada de diferente, quando a minha função disabled é acionada tem como eu tirar as casas decimais dela.
      Fiz dessa forma abaixo:
       
      <f:facet name="header"> <h:outputLabel value="#{messages.conversion}"/> </f:facet> <h:inputText id="fldConversion" value="#{row.vlConversion}" label="#{messages.conversion}" maxLength="25" disabled="#{defaultMBean.canDisabledConversion(row)}"> <a4j:ajax event="change" immediate="true" render="@all, partnerItem, dataModel"/> <f:converter converterId="javax.faces.BigDecimal"/> <f:validateLength maximum="30" /> </h:outputText> <rich:jQuery selector="#fldConversion" query="maskMoney({decimal:''.'',allowNegative:false, showSymbol:false, thousands: '''',precision: 3})"/> E criei esse método para quando estiver desativado o campo:
       
      public BigDecimal canDisableConversionE(TypeDTO row) { BigDecimal r = row.getConversionValue().setScale(0, RoundingMode.HALF_EVEN); System.out.println(r); return r; } public Boolean canDisableConversion(TypeDTO row) { if (row.getId() == 1L && !canDisableConversionE()) { return false; } if (IsWeight(row.getId())) { return true; } return getConfigFacade().canDisableConversionE(row.getConversionValue()); }  
    • By NaPraia
      Olá, estou tentando gerar um arquivo em PDF, mas ele já está dando erro na primeira linha, no comando de import
       
      import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter;     public class Arquivo2704 {                 public static void main (String[] args) {                               Document document = new Document();               try {                     PdfWriter.getInstance(document, new FileOutputStream("C:\\a1.pdf"));                     document.open();                     document.add(new Paragraph("Hello World"));                 }                  catch(DocumentException de) {                     System.err.println(de.getMessage());                 }                  catch(IOException ioe) {                     System.err.println(ioe.getMessage());                 }                  //document.close();    } }
      Alguém pode me ajudar?
      obrigado            
    • By helkton
      oi galera, como criar uma listagem de mesas disponíveis ou produtos cadastrados pra uma lanchonete e restaurante
       
      tipo esta imagem abaixo no caso é de um hotel, mais o esquema seria o mesmo, só mudando o ramo de atividade rsss
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.