Sessao

6 respostas
R

Galera!..

Eu sei criar uma sessão, sei finalizar e sei buscar os atributos dentro de uma sessao…mais ainda tenho duvida no seguinte…quando o caboco tentar acessar a minha pagina e não tiver sessão para ele eu quero que seja redirecionado para uma outra pagina, como fazer isso?

To tentando de todas as maneiras pelo menos dar erro na pagina, mais parece q não ta adiantando fazer sessão, pq nos meus testes eu consigo entrar de qualquer jeito na minha pagina sem abrir uma sessão

Codigo JSP

<%
HttpSession sessao = request.getSession(false);

%>
   
<body>
<jsp:useBean id="usuario" class="br.pronto.atendimento.bean.Usuario" scope="session"/>

<%
	if(usuario == null)
	{	sessao.invalidate();
		response.sendRedirect("ErroUsuario.html");		
	}
	else
		out.println("valido");
%>

6 Respostas

R

Acho q descobri um jeito.

Segue o codigo

<%
	HttpSession sessao = request.getSession(true); 
	if(sessao.getAttribute("id") != sessao.getId())
		response.sendRedirect("ErroUsuario.html");		
	
	else
		out.println("valido");
	
%>

Não sei se é o mais pratico, mais quem tiver ideias pode postar…

valeu

renanpto

e ai blz ?

Vc tentou utlizar o metodo “isNew()” do objeto HttpSession ?

Eu acho que ele pode resolver o seu problema…

flw

R

Não.

Você pode me dar um exemplo?!!..

Uma pergunta, vc sabe como utilizar padrões de projeto para sessões. Percebe que temos um problema, quando a sessão não for valida eu mandarei para uma pagina e se por ventura eu trocar essa pagina de erro, terei que trocar em todas as paginas que uso sessão. como resolver essa questão?

renanpto

Sobre padroes de projeto com sessao eu nao conheco muito,… mas para o seu problema voce pode Implementer um listener de request…

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import br.webshop.facade.GerenciarUsuarioFacadeBean;
import br.webshop.facade.IGerenciarUsuarioFacade;
import br.webshop.to.UsuarioTO;

public class WebShopRequestListener implements ServletRequestListener {

	public void requestDestroyed(ServletRequestEvent reqEvent) {
	}

	public void requestInitialized(ServletRequestEvent reqEvent) {
		HttpServletRequest req = (HttpServletRequest) reqEvent.getServletRequest();
		HttpSession session = req.getSession(true);
		String loginUser = req.getRemoteUser();
		UsuarioTO user = (UsuarioTO) session.getAttribute("usuario");
		IGerenciarUsuarioFacade userFacade = null;
		
		if( loginUser != null && ! loginUser.equals("") && user == null){
			userFacade = new GerenciarUsuarioFacadeBean();
			user = userFacade.buscarUsuarioPorLogin(loginUser);
			session.setAttribute("usuario", user);
			System.out.println("Pesquisar usuario" + user.getNome());
		}
	}

}

Esse é um exemplo que eu monitora quando o usuario logar no sistema via tipo Form (Realm)…
Quando o cara logar eu busco o obj UsuarioTO no banco de dados e salvo na sessao…

Toda solicitacao que chegar no server vai passar por aqui…

R

Eu acabei de criar uma ideia.

Montar uma classe na qual recebe o requeste, dentro dessa classe iremos ver se a sessão do usuario é valida ou não e o usuario continuar a acessar a pagina.

O meu objeitvo com isso são dois, o 1° é econimizar o codigo de copiar e colar e o segundo eh em relação a pagina de redirecionamento caso o usuario não tenha acesso, pois se mastarde eu mudar essa pagina irei ter q mudar em todas as paginas q eu coloquei ela.

Codigo fonte

JSP

O que acha do codigo?

ddduran

ta legal… mas coloca esse seu código dentro de um Filter para que assim você não tenha que copiar e colar o mesmo código em todas as suas paginas, alem de não suar scriptlet

vc tem certeza que quer usar request.getSession(true); ?
esse true ai indica que se não houver sessão você quer que uma nova seja criada

Criado 19 de setembro de 2007
Ultima resposta 19 de set. de 2007
Respostas 6
Participantes 3