Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

JWT e Ajax

Boa Noite Pessoal.

Preciso Muito de uma ajuda. Se alguém puder me ajudar serei muito grato. Vamos lá: Estou tentando dar usar um POST com ajax para fazer login e obter um token JWT no cabeçalho, mas não consigo obter esse maldito token rsrs. Fiz o teste no Postman, com os mesmos dados e consegui obter o token no cabeçalho, mas na minha requisição Ajax não consigo:

$.ajax({
        type: "POST",
        url: "http://localhost:8080/login",
        processData: false, 
        contentType: 'application/json',
        data: JSON.stringify(login),
        cache: false,
        timeout: 600000,

        success: function (data, textStatus, request, response) {
            alert(request.getResponseHeader('Authorization'));
            alert(request.getAllResponseHeaders());
        },
        error: function (request, textStatus, errorThrown, response) {
            alert(request.getResponseHeader('Authorization'));
            alert('Erro');
        }
    });

Eu recebo success, normal, mas quando uso:

alert(request.getResponseHeader('Authorization'))

eu recebo nulo. E ao usar:

alert(request.getAllResponseHeaders());

Não mostra meu cabeçalho 'Authorization'. Se alguém souber o que estou fazendo de errado na requisição e puder me ajudar, serei grato. O mais engraçado é que ao consultar as requisições na aba Network no DevTools do Chrome, na aba Headers, o maldito token está lá na Response Headers. Como eu consigo recuperá-lo por ajax??? rsrs

Aproveitando também, sei que no angular 2 existe uma função para obter o e-mail a partir de um token, mas no JQuery tem algo semelhante???

OBS: Estou usando Spring Boot em meu back-end, e a autenticação foi realizada com sucesso, verifiquei a partir de alguns "println" que coloquei no método de sucesso da autenticação. Acho que meu método Ajax está errado. Já tentei colocar também o .done no meu ajax, mas nada funciona.

Se alguém conseguir ajudar serei eternamente grato. Grato Desde já!!! =D

4 respostas

Oi Tiago, tudo bom?

Se funcionou no Postman, significa que o problema está na requisição mesmo. Uma ótima abordagem é você dar uma olhada em como o postman fez essa requisição, com o cabeçalho e tudo mais.

Pra isso, basta vc clickar na opção code logo abaixo do botão save no app, segue imagem:

https://ibb.co/c16DLT

Nessa aba você encontra o código que o postman executou, assim vc pode comparar com o seu e ver o que está faltando =)

abraço

Boa Tarde André, to tranquilo e vc? =D

Então cara, eu fiz isso, mas na requisição Ajax no Postman não há a recuperação do cabeçalho, o cabeçalho consta na aba Headers, mas a requisição não "pega" esse cabeçalho. Acho que deve ser alguma coisa no Ajax, pois o token consta no Header da resposta.

solução!

Boa Tarde Pessoal,

Já descobri o que houve e já resolvi o problema, como o projeto usa Spring Boot, eu tive que configurar o CORS para expor o cabeçalho Authorization, só depois de fazer isso que eu consegui pegar o cabeçalho usando Ajax.

Boa Tiago =)

Cors costuma dar uma dorzinha de cabeça mesmo de vez em quando haha.

Abraço