Sessão expirada + ajax

3 respostas
A

Boa noite, pessoal.

Possuo uma aplicação onde necessita usuário/senha para acessá-la, os métodos e/ou as classes protegidas estão anotados como @Locked. Elas só poderão ser acessadas caso um usuário esteja atribuído na sessão.

O problema é, que como todos nós sabemos, todo objeto em sessão tem seu tempo para expirar, aí se o usuário fica mais de 20 minutos sem acessar o sistema, este objeto já expirou, aí quando ele vai usar a requisição ajax, ao invés de redirecionar para a página de login (assim como acontece quando faço uma requisição HTTP normal). Ele simplesmente insiste em realizar a requisição, e no Firebug dá um erro tipo 404.

Existe alguma forma de verificar se o usuário está na sessão antes de direcionar para o comando ajax? ou sei lá, o próprio ajax redirecionar para a tela de login caso haja erro?!?

Aqui vai meu código, bem feijão com arroz:

$.ajax({ 
	url: $(this).attr('action'),
	data: $(this).serialize(),
	dataType: 'json',
	success: function(json) { ... }

Obrigado.

3 Respostas

Kanin_Dragon

Utilize filtros.

Abs,

A

Poderia ser mais específico em relação a estes tais filtros? Eu uso o vRaptor, criei um interceptor, e ele intercepta as requisições ok, o problema é quando é requisição AJAX, principalmente quando a sessão expira.

G

O correto seria retornar um 401. O login é feito via JAAS ou alguma solução caseira? Se for a segunda, sua solução caseira precisa lançar um código HTTP 401 para solicitar o login.

Criado 10 de abril de 2011
Ultima resposta 11 de abr. de 2011
Respostas 3
Participantes 3