Oi Pedro,
uma requisição Ajax é na realidade uma requisição HTTP como qualquer outra. Como está organizado seu projeto?
Kico,
É uma aplicação web simples, porém dividida em dois módulos. Um módulo público e outro restrito.
Existe requisições ajax em ambos os módulos, porém quando a sessão de um usuário é destruída por timeout, as requisições ajax que criam para si uma nova sessão porém sem autenticação.
Com isso, passa aos usuários a sensação de estarem logados no sistema quando executam alguma ação que envolve autenticação.
Estou utilizando o plugin Spring Security para autenticação de usuários.
Estou trabalhando com a ideia de utilizar o $.ajaxSetup() com implementação do beforeSend para validar a sessão. Conseguindo os resultados que pretendo, publico a solução.
Entretanto, quero compartilhar esta dificuldade que estou tendo afim de saber se alguém já passou por esse mesmo problema e se tiveram uma solução mais simples na qual estou pensando.
Grato.
Pedro,
não sei se o que vou dizer vai te ajudar, mas vai lá! :)
O Spring Security tem um esquema especial para fazer autenticação por ajax. Ele é bastante usado quando nós estamos criando aplicações do tipo single page application. Aí monta-se a seção e tudo mais. Já usou este ecurso?
Kico,
Não conheço, como estou iniciando a manutenção desta aplicação, não sei te informar se está implementado essa função. Vou pesquisar.
Com o beforeSend, não tive sucesso.
Porém, nesta aplicação, há um método que valida se o usuário está logado. Fiz um simples if para validar meu redirecionamento de página mas o redirect não está redirecionando para página informada. Já passaste por este problema?
* A ação acima é recorrente de um ajax que retorna uma lista de sugestões na busca.
Grato.
Solução para o problema que vinha enfrentando com as requisições em ajax.
;(function (window, document, undefined) {
'use strict';
var validaSessaoUsuario = (function(){
var exports = {}
var _ajaxErrors = function () {
$( document ).ajaxError(function( event, jqxhr, settings, exception ) {
switch (jqxhr.status) {
case 401:
window.location = url("/login/auth?tatus=401");
}
});
};
exports.init = function () {
_ajaxErrors();
};
return exports;
})();
window.validaSessaoUsuario = validaSessaoUsuario;
validaSessaoUsuario.init();
})(window, document);