1
resposta

[Dúvida] Não há necessidade de um logout no back end?

Seria apenas expirar/deletar o token no client e deixar toda a responsabilidade de logout no client mesmo?

1 resposta

Olá, Wilson.

Tudo bem?

Essa é uma ótima pergunta e bastante pertinente quando trabalhamos com autenticação utilizando JWT. Vamos lá!

Logout no Backend

Quando utilizamos JWT (JSON Web Tokens) para autenticação, o processo de logout pode ser um pouco diferente do que estamos acostumados com sessões tradicionais. No caso do JWT, o token é armazenado no cliente (geralmente no localStorage ou cookies) e enviado ao servidor em cada requisição.

Expirar/Deletar o Token no Cliente

Sim, você pode simplesmente expirar ou deletar o token no cliente para realizar o logout. Isso é uma prática comum e pode ser suficiente em muitos casos. No entanto, há algumas considerações a serem feitas:

  1. Segurança: Se um token JWT for comprometido, ele pode ser usado até expirar. Deletar o token no cliente não impede que um token comprometido continue sendo usado até seu tempo de expiração.

  2. Revogação de Tokens: Em alguns casos, pode ser necessário invalidar um token antes do seu tempo de expiração (por exemplo, se um usuário mudar sua senha ou se um token for comprometido). Para isso, você precisaria de uma lista de tokens revogados no backend.

Implementando Logout no Backend

Para implementar um logout mais seguro, você pode combinar a expiração/deleção do token no cliente com uma lógica de revogação no backend. Aqui está um exemplo de como você pode fazer isso:

  1. Lista de Tokens Revogados: Mantenha uma lista de tokens revogados no Redis ou em outro armazenamento rápido. Quando um usuário faz logout, adicione o token a essa lista.

  2. Middleware de Validação: Implemente um middleware no Nest.js que verifica se o token está na lista de tokens revogados antes de permitir o acesso a rotas protegidas.

Em resumo, deixar a responsabilidade de logout apenas no cliente pode ser suficiente em muitos casos, mas adicionar uma camada de segurança no backend para revogar tokens pode aumentar significativamente a segurança da sua aplicação.

Espero ter ajudado e bons estudos!