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

Logout ?

após o cliente logar, todas as requisições subsequentes o token jwt vai ser mandado no cabeçalho da requisição e o servidor vai validar o token, entretanto uma coisa que não ficou muito clara é se o server armazena esse token em algum lugar e se o usuário quiser fazer logout do sistema, como fazemos para invalidar o token?

3 respostas
solução!

Oi Ricardo,

Quando se utiliza autenticação via tokens não existe mais o conceito de logoff no lado do servidor.

O token vai continuar existindo no servidor até ele expirar, de acordo com a data de expiração que foi definida ao criá-lo.

Nesse tipo de autenticação, o logoff funciona no lado do cliente, pois quando um usuário clicar no botao de logoff, a aplicação cliente deve excluir o token de onde eles estiver armazenado.

Mas se o token ainda não tiver expirado, para o servidor ele ainda estará válido.

Se quiser realmente 'simular' um logoff no lado do servidor, deverá implementar um mecanismo de blacklist, que funcionará da seguinte maneira: quando o cliente disparar a requisição de logoff, uma lógica deve adicionar o token dele em uma lista de tokens inválidos e nas próximas requisições deve ter mais uma lógica para verificar se o token do cliente está na lista de inválidos e rejeitar a requisição caso esteja.

Bons estudos!

Oi Rodrigo, obrigado pela resposta e de antemão te parabenizar pela tua excelente didática durante o treinamento. Pois é essa parte de autenticação agente ganha pelo fato de ser stateless em compensaçãoaumenta-se um pouco a complexidade para gerenciar esse monte de token, uma alternativa poderia ser salvar esses tokens em um banco de dados e na hora de simular o logout eu remover o registro do banco?

Oi Ricardo,

Valeu pelo feedback :)

Salvar no BD seria uma boa opção para resolver essa questão!

Eu optaria por salvar em algum BD NoSQL, tipo Redis ou Memcached, por questões de performance.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software