2
respostas

Como invalidar e renovar o token

Bom dia!

Após implementar o metodo que é ensinado no curso, surgiu algumas duvidas a respeito do assunto.

É possivel definir um tempo para que o token expire, e ai após o timeout, o usuário é obrigado a se logar novamente e é gerado um novo token.

Mas ai surgiram alguns questiomantos:

1ª - Como renovar o token? Se o token durar 10 minutos, e a pessoa estiver utilizando o sistema, o mesmo não pode ser inutilizado. O timeout deve ocorrer com x tempo de inatividade. Como fazer esse processo de renovação?

2º - Como que eu invalido o token, como por exemplo num logout. O usuário se deslogou do sistema, então aquele token deve ser inutilizado, e para que ele possa novamente acessar será necessário gerar um novo token.

Até procurei conteudos a respeito disso na internet, mas tudo que achei era uma biblioteca o JTW/Tymon, porem não consegui instala-la pois ela não é compativel com as novas versões do Lumen/Laravel.

Fico no aguardo de considerações.

Abs,

Lucas Pardini

2 respostas

Alguem pode me ajudar com essa duvida? rs

Oi Lucas, como vai?

Para renovar o token, você pode implementar um sistema de refresh token. Basicamente, você pode adicionar um campo na tabela de usuários para armazenar um token de atualização. Esse token de atualização teria um tempo de validade maior do que o token de acesso. Assim, quando o token de acesso estiver prestes a expirar, o usuário pode enviar o token de atualização para renovar o token de acesso.

Por exemplo, suponha que o token de acesso tenha uma validade de 10 minutos e o token de atualização tenha uma validade de 1 hora. Quando o token de acesso estiver próximo de expirar, o usuário pode enviar o token de atualização para o servidor. O servidor verifica se o token de atualização é válido e, se for, gera um novo token de acesso com uma nova validade de 10 minutos. O token de atualização também pode ser renovado nesse processo, para que o usuário possa continuar usando o sistema sem precisar fazer login novamente.

Quanto à invalidação do token, você pode implementar um sistema de logout que revoga o token de acesso. Isso pode ser feito de várias maneiras, como armazenar os tokens revogados em uma lista negra no servidor ou armazenar a data e hora de expiração do token de acesso no banco de dados do usuário. Quando o usuário faz logout, o servidor pode verificar se o token de acesso ainda é válido e, se não for, negar o acesso. Caso contrário, o servidor pode adicionar o token à lista negra ou atualizar a data e hora de expiração no banco de dados para torná-lo inválido.

Sobre a biblioteca JWT/Tymon, ela pode ser uma opção viável para implementar a autenticação com tokens no Lumen. No entanto, se ela não for compatível com as versões mais recentes do Lumen/Laravel, você pode considerar outras bibliotecas ou até mesmo implementar a autenticação manualmente, seguindo as práticas recomendadas de segurança.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!

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