Controlar sessão

0 respostas
Jos_Maur_io
  • Bom pessoal!!!

-Estou estou desenvolvendo um aplicativo utilizando JSP e Servlets que possui algumas páginas que são de acesso restrito, por isso eu faço o seu controle de acesso através do login dos usuários e utilizo uma session para verificar se o usuário está logado ou não, mas quando eu faço o logout do sistema o usuário consegue visualizar as páginas que foram acessadas anteriormente por ele utilizando os botões de navegação do browser. Eu tentei colocar na página JSP acima da tag os comando:

response.setHeader(“Cache-Control”,“no-cache”); //HTTP 1.1
response.setHeader(“Pragma”,“no-cache”); //HTTP 1.0
response.setDateHeader (“Expires”, 0); //nao salva cache no servidor proxy

-Mas mesmo assim ficou salvo no cache do browser a página.

-Desde já eu agradeço!!!

Abaixo segue o código do servlet que faz o controle de acesso e o que faz a o encerramento da sessão.

Controle de acesso as páginas:

public class SistemaAvaliacaoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public SistemaAvaliacaoServlet() {
        super();
    }
    
   
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
    	String url="";
    	String cmd= request.getParameter("cmd");
    	String NomeCat="";
    	
    	int total_categoria=0;
    	String cat=request.getParameter("categoria");
    	System.out.println(cat);
    	
    	int categoria=0;
    	
    	if(cat!=null && !cmd.equals("acessar"))
    	{
    		categoria=Integer.parseInt(cat);
    	}
    	
    
    	
    	InterfaceSistemaAvaliacaoDAO perguntasDAO;
    	UsuarioDAO usuarioDAO;
    	ConsultaDAO consultasDAO;
    	
    	HttpSession sessao;
    	sessao=request.getSession(true);
    	Usuario usuarioSessao=(Usuario)sessao.getAttribute("usuario");
    	
    
    	
    	try
    	{
    		perguntasDAO=new SistemaAvaliacaoDAO();
    		usuarioDAO=new UsuarioDAO();
    		consultasDAO=new ConsultaDAO();
    		
    		RequestDispatcher rd=null;
    		
    		total_categoria=perguntasDAO.getQuantCategorias();
    		NomeCat=perguntasDAO.getNomeCategoria(categoria);
    		
    		
    		
    		  	 if(usuarioSessao==null)
    			   {
    		  		 
    		  		   System.out.println("Passou aqui no sair");
    		  		 
    							if(cmd.equalsIgnoreCase("acessar"))
    							  {
    									String nomeAcesso=request.getParameter("nome");
    									String senhaAcesso=request.getParameter("senha");
    									
    			    	   		
    									Usuario usuario=usuarioDAO.Usuarios(nomeAcesso,senhaAcesso);
    									request.removeAttribute("nome");
    									request.removeAttribute("senha");
    									System.out.println(nomeAcesso);
    									
    									if(usuario==null)
    									{
    										String mensagem="Usuário ou senha inválidos";
    										request.setAttribute("mensagem",mensagem);
    										url="/TelaLogin.jsp";
    										rd=request.getRequestDispatcher(url);
    									}
    									else
    			    	   		     	                  {
    			    	   			   		   
    			    	   			
    			    	   			   			sessao.setAttribute("usuario",usuario);
    			    	   			   			System.out.println("Sessão foi criada");
    			    	   			     
    			    	   			   			if(consultasDAO.getQuantConsultas(usuario.getCodigo(),0)==0)
    			    	   			   			{
    			    	   				 
    			    	   			   			int quantConsultas=consultasDAO.getQuantConsultas(usuario.getCodigo(),1);
    			    	   			   			url="/CadConsulta.jsp?categoria=0&consulta="+quantConsultas;
    			    	   			   				
    			    	   			   			    rd=request.getRequestDispatcher(url);
    			    	   			   			}
    			    	   			   			else
    			    	   			   				{
    			    	   			   				    url="SistemaAvaliacaoServlet?cmd=FormConsult";
    			    	   			   				    rd=request.getRequestDispatcher(url);
    			    	   			   				}
    			    	   			   
    			    	   		     	    }
    								        
    									
    							  }	
    							else 
    								if(cmd.equalsIgnoreCase("FormCadUsuario"))
    								  {
    									int quantUsuarios=usuarioDAO.getQuantUsuarios();
    			    	   		
    									url="/CadUsuario.jsp?quantUsuarios="+quantUsuarios;
    									rd=request.getRequestDispatcher(url);
    									rd=request.getRequestDispatcher(url);
    								  }
    								 else 
    									 if(cmd.equalsIgnoreCase("CadUsuario"))
    									   {
    										 Usuario usuarioCad=new Usuario();
    									
    										 usuarioCad.setNome(request.getParameter("nome"));
    										 usuarioCad.setLogin(request.getParameter("login"));
    										 usuarioCad.setSenha(request.getParameter("senha"));
    										 usuarioCad.setEscolaridade(request.getParameter("escolaridade"));
    										 usuarioCad.setTipo(request.getParameter("tipo"));
    			    	   
    										 usuarioDAO.salvarUsuario(usuarioCad);
    			    	   		
    										 url="/TelaLogin.jsp";
    										 rd=request.getRequestDispatcher(url);
    									   }
    									 else
    									     {
    										 
    				    					String mensagem="A sessão expirou ou o usuário não está logado no sistema.";
    				    						request.setAttribute("mensagem",mensagem);
    				    						
    				    						url="/TelaLogin.jsp";
    				    						rd=request.getRequestDispatcher(url);
    									    }
    							
    			   }
    		      
    		  	   else if(usuarioSessao!=null)
    		  	   	  	{
    		  		   
    		        			
    		        			               if(cmd.equalsIgnoreCase("sair"))
    		        			       		   {
    		        			    	   		
    		        			    	   		Consulta catUltConsulta=(Consulta)sessao.getAttribute("consulta");
    		        			    	   		
    		        			    	   		int catConsulta=0;
    		        			    	   		int codConsulta=0;
    		        			    	   		
    		        			    	   		if(catUltConsulta!=null)
    		        			    	   		  {
    		        			    	   		    catConsulta=catUltConsulta.getCategoria();
    		            			    	   		    codConsulta=catUltConsulta.getCodigo();
    		            			    	   		
    		            			    	   		    int pontConsulta=perguntasDAO.getPontuacao(codConsulta);
    		            			    	   		
    		        			    	   		  }
    		        			    	   		
    		        			    	   		
    		        			    	   		
    		        			    	   		rd=request.getRequestDispatcher("/FecharSessaoServlet");
    		        			       		  }
    		        			       
    		    		  }
    		  		   
    		  		   
      		          }
    		  	 
    		rd.forward(request,response);
    		
    	}
    	catch(Exception e)
    	{
    		e.printStackTrace();
    		throw new ServletException(e);
    	}
    	
    }
    

}



//
Sevlet responsável por fechar a sessão

public class FecharSessaoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
 
    public FecharSessaoServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
   public void destroy()
   {
	   super.destroy();
   }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		HttpSession sessao=request.getSession(true);
		sessao.removeAttribute("usuario");
		RequestDispatcher rd=null;
		sessao.invalidate();

		
		
		rd=request.getRequestDispatcher("/TelaLogin.jsp");
		rd.forward(request,response);
		
		
		System.out.println("Saiu do Sistema!!!");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}
Criado 14 de maio de 2010
Respostas 0
Participantes 1