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.