Matar sessÃo [resolvido]

20 respostas
G

Ola pessoal queria saber se algum poderia me ajudar.

eu tenho uma tela JSP com esses 3 botoes, CADASTROS que me leva para uma tela que contem varios cadastros, LISTAS que me leva para uma tela que contem varias listas e o
botão SAIR. E é esse o problema eu queria matar a sessao no momento em que o botão SAIR fosse clicado que ele redireciona para a tela inicial do sistema.

alguem poderia ajudar??????????

<div id="TelaPrincipal">
                        <h3></h3>
                        <a href="<%=request.getContextPath()%>/faces/paginas/pagCadastro.jsp" class="button">CADASTROS</a> <br/><br/>
                        <a href="<%=request.getContextPath()%>/faces/paginas/pagListas.jsp" class="button">LISTAS</a> <br/><br/>    

                        <a href="<%=request.getContextPath()%>/faces/login/formLogin.html"  class="button">SAIR</a>       
                    </div>

20 Respostas

Hebert_Coelho

Você terá que chamar o comando session.invalidate();

O session você encontra dentro do HttpRequest.

G

Cara eu fiz o seguinte eu criei uma pagina JSP chamada logoff e quando é clicado o botão SAIR é redirecionada para essa pagina e nela eu faço:

<%
    session.invalidate();
    response.sendRedirect(request.getContextPath()+"/faces/login/formLogin.html");
    
%>

a segunda linha é a tela de Login do sistema, nesse caso ele mataria a sessao e redireciona para a tela Login novavmente.
e mesmo assim não deu certo, se eu clicar no botão voltar do browser ele volta para a tela inicial do sistema.

R
gabrielnsouza:
Cara eu fiz o seguinte eu criei uma pagina JSP chamada logoff e quando é clicado o botão SAIR é redirecionada para essa pagina e nela eu faço:
<%
    session.invalidate();
    response.sendRedirect(request.getContextPath()+"/faces/login/formLogin.html");
    
%>

a segunda linha é a tela de Login do sistema, nesse caso ele mataria a sessao e redireciona para a tela Login novavmente.
e mesmo assim não deu certo, se eu clicar no botão voltar do browser ele volta para a tela inicial do sistema.

Meu amigo, isso pode ser Cash.. o que acontece, quando vc fizer o logof, tenta acessar uma página que possua uma restrição.. ou por filter ou por scriptlet...

Clica em SAIR e depois tenta acessar uma página de adm ou algo do tipo.. ele não vai acessar...
Exemplo de Filtro:

<%
         if(session.getAttribute("user") == null{
                 
                     session.invalidate();
                     request.getrequestDispatcher("index.jsp").forward(request,response);                  
 
           }
%>

ve ai..

G

Cara eu fiz isso mas deu certo não, ja setei o atributo como null pra depois fazer as comparações e nada.

alguem…AJUDA.

R

Manda a parte do código que faz isso… copia e cola.

G

Cara consegui aqui mais ou menos do jeito que vc falou acho que tava dando certo e não estava sabendo é que sou novo no java web.

mas como eu garanto que minha aplicação so vai estar acessivel se estiver uma sessão porque o caso é, eu mato a sessão mas se eu voltar no botão do browser consigo
acessar a aplicação normalmente mas sem uma sessao. entende ?

Hebert_Coelho

Vc criou um filtro para controlar o acesso do usuário?

Qual código você tem que teria que impedir o acesso do usuário à tela principal?

R

gabrielnsouza:
Cara consegui aqui mais ou menos do jeito que vc falou acho que tava dando certo e não estava sabendo é que sou novo no java web.

mas como eu garanto que minha aplicação so vai estar acessivel se estiver uma sessão porque o caso é, eu mato a sessão mas se eu voltar no botão do browser consigo
acessar a aplicação normalmente mas sem uma sessao. entende ?

Eu entendo meu amigo, mas o que acontece… Isso é Cash do navegador, já sofri muito com isso e você vai sofrer também… rsrsrs

Existe um comando que você coloca que ele limpa o cash, não deixe o cara clicar em VOLTAR lá em cima… mas nem curto adicionoar isto nos meus projetos… É normal, navegador é navegador… kkkk

G

Amigo como eu verifico se existe uma sessão

Hebert_Coelho

Faz o seguinte, aproveita que você ta começando e estuda isso aqui: Autenticação de Usuários (Filter/Servlet).

Ele mostra como fazer validação de login do modo correto utilizando JSP e Filter.

R
gabrielnsouza:
Amigo como eu verifico se existe uma sessão

Na página JSP você pode resgatar ela po... usanto SCRIPLET ou EL ($).. dessa forma:

Resgata ela e pergunta se ela é igual nula.. ai vc vai saber.. é isso que vc quer ?

Scriplet:
<%

        session.getAttribute("nomeSessao");
 
%>
Pelo EL ($):
${nomeSessao}

entendeu ?

G

Cara assim eu to querendo verificar se a sessao esta existente para não deixar o cara entrar no sistema se caso não tenha sessao ativa da uma msg não autorizado, entendeu???

eu to tentando mais ou menos assim

<% if(session.getAttribute("sessao")){ %>
R

[quote=gabrielnsouza]Cara assim eu to querendo verificar se a sessao esta existente para não deixar o cara entrar no sistema se caso não tenha sessao ativa da uma msg não autorizado, entendeu???

eu to tentando mais ou menos assim

<% if(session.getAttribute("sessao")){ %>

Faça assim então:

<%

    if(session.getAttribute("sessao") == null){
        
        // Da o invalidate se caso tipo, você tiver uma restrição diferenciada, sendo administrador... ou outro tipo de usuario, vc pode invalidar logo pra n dar erro.. kkkk
        session.invalidate();     
        request.setAttribute("mensagem","Usuário sem permissão.");  
        request.getRequestDispatcher("index.jsp").forward(request, response);


   }

%>

E aí funciona assim, na sua index.jsp, você coloca assim:

// Aqui você está resgatando o atributo que vc setou na sua validação.
${mensagem}

Entendeu amigo ?

Hebert_Coelho

Oq o código abaixo faz?
if(session.getAttribute(“sessao”) == null)

Oq deve sair desse método? session.getAttribute(“sessao”)

R

jakefrog:
Oq o código abaixo faz?
if(session.getAttribute(“sessao”) == null)

Oq deve sair desse método? session.getAttribute(“sessao”)

Bom, ele verifica se a sessão existe, ele diz exatamente isso: IF A SESSÃO FOR IGUAL A NULA FAÇA O QUE ESTÁ DENTRO DAS “{ }”.

Entendeu ?

Se tiver dúvidas sobre o seu código, posta aqui que eu te ajudo… eu saio as 21hrs daki … kkkk tem até as 21hrs.

Assim, quando o Usuário faz um login você pode Atribuir uma Sessão pra ele…

Aí no Servlet… você faz assim…

HttpSession session = request.getSession();

session.setAttribute("idUsuario");

… você “criando” uma sessão para o usuario, que é o ID DELE… ai quando o Servlet “jogar” o Usuário para página ele vai enviar a sessão também… ai é onde vc resgata ela dizendo -> session.getAttribute(“idUsuario”);

Tipo, se caso o cara digitar no navegador o nome da sua página que tem restrição… ele vai verificar que o cara não fez o login e vai fazer o que está dentro dos “{ }”…

Entendeu ou eu compliquei mto ? =/

Hebert_Coelho
  1. O código não é meu. MAuhauhuha

  2. eu duvido, aposto o que o mundo quiser, que esse código vai ser sempre null. if(session.getAttribute(“sessao”) == null). MAuhauhauha

Sabe pq? Em nenhum momento ele passa nada aí para dentro.

Oq seria o sessao que está dentro da session?

R
  1. O código não é meu. MAuhauhuha

  2. eu duvido, aposto o que o mundo quiser, que esse código vai ser sempre null. if(session.getAttribute(“sessao”) == null). MAuhauhauha

Sabe pq? Em nenhum momento ele passa nada aí para dentro.

Oq seria o sessao que está dentro da session?

“sessao” é só uma variável…

Outro exemplo:

<%
	if (session.getAttribute("mat") == null){

		session.invalidate();
		request.setAttribute("mensagem", "Usuário sem permissão");
		request.getRequestDispatcher("index.jsp").forward(request, response);

	}
%>
elanod

<!–v só como eu faço amigo
no jsf faço assim bota sair -->

&lt;h:commandButton type="submit"
           	action="#{usuarioControle.logout}" 
           	id="sair" value=" Sair." /&gt;

//classe UsuarioControle do bean usuarioControle

// sai da área do usuário
public String logout() {
	session.removeAttribute("user");
	return "logar";

}

//no faces config tenho. o asterisco quer diser chamando de qualquer pagina

<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>logar</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>

G

Pessoal eu to tentando verificar em uma pagina da minha aplicação por exemplo se a sessao existe ou se tem alguem logado não sei bem como é nesse caso
para liberar ou não acesso queria saber como fazer, eu estou tentando assim:

<% if((String)session.getAttribute("login") != "" | (String)session.getAttribute("login") != null){ %> <decorator:body/> <%}else{%> acesso não autorizado <%}%>

onde “login” é o atributo que recebe quem esta logado e esse decortor:body/ é o corpo de todas as paginas.
isso esta em um aquivo que sempre é executado por isso que se eu fizer aqui ja vai valer para todas as paginas, ja fiz ate o teste se eu colocar dentro do if apenas true ele mostra normal se eu colocar false ele não deixa eu abrir nenhuma.

G

Pessoal muito obrigado pela ajuda de vcs esse forum é realmente fantastico e vc consegui aprender muito aqui
rsmoraes e jakefrog obrigado pelas dicas e ajudas, consegui fazer o que eu queria

bastava fazer

if (session.getAttribute("login") != null) {

obrigado.

Criado 16 de fevereiro de 2012
Ultima resposta 17 de fev. de 2012
Respostas 20
Participantes 4