Cache no metódo forward de Servlet

13 respostas
luciano2

Ola pessoal estou com uma dúvida, estou dando manutenção em uma aplicação que utiliza um Filtro para verificar o usuário logado,
surgiu um erro e eu verifiquei que se eu executar um redirect dentro do filter um forward executado na próxima requisição está direcionando para a mesma página do redirect.

Alguém já passou por algum problema semelhante?

13 Respostas

Hebert_Coelho

Mano, ficou confuso.

Sua dúvida é se você pode fazer um redirect e depois um forward?

luciano2

Não a dúvida não é essa. Deixa eu explicar melhor.

Tenho uma aplicação que usa JAAS para autenticação, só que a própria aplicação faz a parte de autorização. Quando um usuário não autorizado loga na aplicação eu executo um session.invalidate() e logo depois faço um redirect para página de erro. Depois dessa operação eu tento logar com um usuário autorizado, o usuário consegue fazer login mas um forward que eu executo não funciona, ele retorna para a mesma página do redirect ao invés de entrar no sistema.

Sabe oque pode estar acontecendo?

Hebert_Coelho

Sua app implementa um módulo JAAS?

Como que você faz?quote]Quando um usuário não autorizado loga na aplicação eu executo um session.invalidate()[/quote]

luciano2

Minha aplicação não implementa um modulo, a aplicação utiliza o módulo básico do JBoss.

O session.invalidate() é feito dentro de um Filter, ele invalida a sessão e redireciona para a tela de login com a mensagem de erro.

Hebert_Coelho

Pois é cara, minha dúvida é qual a necessidade desse filtro. =/

Uma vez que o JAAS já captura e não deixa ninguém navegar de modo indevido. =/

luciano2

A necessidade é que o JAAS só autentica, mas dentro dos usuário autenticados nem todos tem autorização para navegar.

Somente determinados perfis podem acessar determinadas funcionalidades e isto é controlado pela aplicação.

Hebert_Coelho

luciano@@:
A necessidade é que o JAAS só autentica, mas dentro dos usuário autenticados nem todos tem autorização para navegar.

Somente determinados perfis podem acessar determinadas funcionalidades e isto é controlado pela aplicação.


Disso aí que você sitou o que o JAAS não faz?

Até onde eu sei o JAAS faz justamente isso. Bem, mas isso não vem ao caso…

Seu problema está que após fazer o login vc não está conseguindo enviar o usuário para página correta ou parece que o usuário não está validando?

luciano2

JAAS faz tudo isso que eu disse, mas não da forma que meu cliente especificou e está brigando para que seja implementado.

Hebert_Coelho

Esses clientes… pfffffff

Pq ao invés de mandar um forward você não tenta mandar um HttpServletResponse.sendRedirect()?

luciano2

Eu mandei um sendRedirect quando invalidei o usuário não autorizado.

O problema é que logo após eu tento logar com o usuário autorizado e ai eu tenho que utilizar o forward para direcionar para a página principal.

Oque acontece é que quando faço submit da minha página de login ele faz duas coisas.

Vai na action J_Security_chek do JAAS e cria o principal com o usuário que eu fiz login, mas ao invés de executar o forward para página principal ele está seguindo para a url que veio do browser.

Hebert_Coelho

Realmente esse é o comportamento do JAAS.

Eu vi no link abaixo que o cara faz o seguinte antes de redirecionar:
String user = req.getParameter("j_username");
String pass = req.getParameter("j_password");

req.getSession().setAttribute("redirectUrl", >>>>>>COLOQUE_SUA_PAGINA_AQUI_COMO_STRING<<<<<<);
resp.sendRedirect("j_security_check?j_username="+user+"&j_password="+pass);
Tenta aí... Vai que funciona! [=

http://roneiv.wordpress.com/2008/02/18/jaas-authentication-mechanism-is-it-possible-to-force-j_security_check-to-go-to-a-specific-page/

luciano2

Funcionar até funciona mas não para oque eu quero. Vou pra casa amanha resolvo isso.

Hebert_Coelho

Blz.

Bom descanso e vai pela sombra. [=

Criado 15 de fevereiro de 2012
Ultima resposta 15 de fev. de 2012
Respostas 13
Participantes 2