Bom dia pessoal.
Eu quero, no meu caso, validar se o token expirou. Como eu posso fazer isso através da validação do token?
Bom dia pessoal.
Eu quero, no meu caso, validar se o token expirou. Como eu posso fazer isso através da validação do token?
Olá, Fernando! Entendo que você queira verificar se um token expirou.
No código que você está estudando, o tempo de expiração do token é controlado pela propriedade ClockSkew
, que está definida como TimeSpan.Zero
. Isso significa que o sistema não vai tolerar nenhum desvio de tempo - ou seja, assim que o tempo de validade do token expirar, ele será considerado inválido.
Caso você queira verificar manualmente se um token expirou, você pode decodificar o token e verificar o campo exp
(de expiration), que é um timestamp da data/hora de expiração do token. Existem várias bibliotecas que podem ajudar nisso, como a JwtSecurityTokenHandler
do próprio .NET. Aqui está um exemplo de como você poderia fazer isso:
var handler = new JwtSecurityTokenHandler();
var tokenS = handler.ReadToken(seuToken) as JwtSecurityToken;
var dataExpiracao = tokenS.ValidTo;
if (dataExpiracao < DateTime.UtcNow)
{
Console.WriteLine("Token expirado.");
}
else
{
Console.WriteLine("Token ainda é válido.");
}
Neste exemplo, seuToken
é uma string contendo o token JWT que você quer verificar. O método ReadToken
decodifica o token, e a propriedade ValidTo
retorna a data/hora de expiração do token. A comparação dataExpiracao < DateTime.UtcNow
verifica se a data/hora de expiração é anterior à data/hora atual, indicando que o token expirou.
Lembre-se de que essa é uma verificação manual, na maioria das vezes você não precisa fazer isso, pois a própria biblioteca de autenticação vai verificar a validade do token para você.
Espero ter ajudado e bons estudos!
E como eu posso chamar esse código no arquivo de Program.cs, e obter o token que vem pela requisição?