Ainda tenho ploblemas com o logout!

Galera eh o seguinte!

Implementei um sistema de login na minha aplicação q funciona da seguinte forma:
Para o usuário visualizar a página index.jsp é necessário primeiro fazer a autenticação. Portanto na index.jsp eu verifico se o usuário está logado no sistema, atravéz do seguinte código:

[code]
<%
if(request.getSession(false).getAttribute(“Usuario”) == null)
{
response.sendRedirect("/zeus/recursos/paginas/login.html");
}
else
{
%>

//página

<%
}
%>

Se o usuário não estiver logado, ele é redirecionado para a página de login(login.html) q tem um submit apontando p/ uma servlet(Login).
Esta servlet contém o seguinte código:

[code]
//pegando os valores informados pelo usuário
String nome = request.getParameter(“tf_usuario”);
String senha = request.getParameter(“tf_senha”);

//transformando p/ maiúsculas
nome = nome.toUpperCase();
senha = senha.toUpperCase();

ResultSet rs = this.dao.getUsuario(nome, senha);

HttpSession sessao = request.getSession(true);

if(rs.next())
{
//setando atributos da sessao do usuário
sessao.setAttribute(“Usuario”,nome);
sessao.setAttribute(“Senha”,senha);

response.sendRedirect("/zeus/index.jsp");
}
else
{
response.sendRedirect("/zeus/recursos/paginas/invalido.html");
}

Portanto c o usuário tentar acessar a index.jsp digitando a url: http://localhost:8080/zeus/index.jsp, ele será redirecionado p/ a página de login!

Até aí tranquilo!! Funciona perfeitamente!!

Já na index.jsp criei um link para fazer o logout do sistema! Esse link chama uma servlet(Logout) que contém o seguinte código:

[code]
HttpSession session = request.getSession(false);

session.setAttribute(“Usuario”, null);
session.setAttribute(“Senha”, null);

response.sendRedirect("/zeus/index.jsp");

obs.: note q o sendRedirect aponta p/ a index.jsp!

Como os atributos foram anulados o usuário vai ser redirecionado p/ a página d login novamente!!
Aparentemente funciona perfeitamente! só q…

como o usuário foi redirecionado novamente p/ a página de login, ele deveria c autenticar novamente p/ acessar a index.jsp c quisesse!

Acontece q após o logout c o usuário tentar acessar a index.jsp digitando a url: http://localhost:8080/zeus/index.jsp, a página será exibida desta vez sem a necessidade da autenticação!!!

Entendem meu problema?

Alguém tem uma solução?

Vlw…

Deu o msm resultado!!
Eu ja tinha tentado invalidar a sessão mas nem tinha dado certo tb…

[code]
if(request.getSession().getAttribute(“Usuario”) != null)
{
request.getSession().removeAttribute(“Usuario”);
request.getSession().removeAttribute(“Senha”);
request.getSession().invalidate();

response.sendRedirect("/zeus/index.jsp");
}

Como funciona o eskema do filtro? Vc sabe?

Continua dando errado!!

Não sei c vc pegou mas, essa verificacao q eu faco na index.jsp até funciona na primeira vez q o usuario tenta ecessá-la! Mas quando ele faz o logoff ele consegue visualizar a página sem a autenticacao, diitando o endereco no browser…

Aí soh vai voltar a exigir a autenticacao quando eu fecho o browser i abro logo em seguida!!

Entendeu??

O filtro eu defino no xml não é? Vc tem um exemplo? Talvez seja a solução…

Ahh tranquilo intão!!

Ja li sobre este método d controle d acesso, parece ser o mais popular! Desta forma q eu fiz nao vai funcionar corretamente msm…

Mas funciona independente de framework? Poís minha aplicacao eh simples i nem utilizo framework ainda!!!

Rodrigo
Na sua action de logoff vc tem q invalidar a sessao.
Tente isso:

if (request.getSession().getAttribute(“Usuario”) != null)
request.getSession().removeAttribute(“Usuario”);
request.getSession().invalidate();

Amigo
Tente modificar a sua index.jsp

Tente tirar o getSession(false) para getSession().

<%
if(request.getSession().getAttribute(“Usuario”) == null)
{
response.sendRedirect("/zeus/recursos/paginas/login.html");
}

Quanto ao filtro seria interessante criar o filtro para verficar se a sessao do usuario ainda é valida…se nao for direciona para a pagina de login.
Ai vc mapeia as actions, jsp que vc quer para passar pelo filtro primeiro.


[color=red]Observacao
Na sua action LogOff deixe invalidando a sessao tambem.[/color]

Entendi o que vc disse.
Bom, aqui tenho uma aplicacao de uma financeira que faz o sistema de login.
Ele funciona da mesma forma que te passei com uma diferenca…nao codifico nada na index.jsp…faço o login e a verificacao e a busca atraves da LoginAction que direciona para a index.jsp ou para o login.html.

Outra coisa que utiliza é na web.xml utilizar a autenticacao tipo FORM. Ele utiliza o LDAP para a obtencao dos dados do usuario.Dê uma pesquisada sobre autenticacao web via FORM.

Ai para todas as actions e as jsp utilizo o filtro para verificar se a sessao do usuario ainda é valida.

Rodrigo
Funciona sim…
Agora, tente mudar essa sua aplicacao utlizando a Action para validar. Nao coloque na JSP a validacao. Isso deve funcionar independente de utilizar a autenticacao FORM.