9.7 Refrescando tu token
Algunos servicios incluyen la opción de refrescar tu token, por ejemplo si un hacker obtiene tu token ya sea porque esta rastreando las peticiones al servicio o mediante un mail falso, si das un tiempo corto de vida, por ejemplo 1 hora, si un hacker obtiene el token solo podría utilizarlo durante máximo una hora, también puedes agregar validaciones para poder desactivar un token a un usuario.
Como ya tenemos la función que nos da el código para refrescar el token, vamos a crear el servicio para refrescar el token, será mediante un método POST y va a recibir como parámetro el código para refrescar el token.
Primero en nuestra clase UsuarioAcceso le vamos a cambiar la longitud a 400 caracteres
public class UsuarioAcceso
{
//Otros campos
[Column(TypeName = "VARCHAR(400)")]
[Required(ErrorMessage = "Required")]
public string Token { get; set; }
}Agregamos la migración y actualizamos la base de datos.
En nuestra carpeta DTO agregamos la clase RefreshTokenDTO el cual va a contener solamente el código para refrescar el token.
/// <summary>
/// Clase para refrescar el token
/// </summary>
public class RefreshTokenDTO
{
/// <summary>
/// Código para refrescar el token
/// </summary>
public string RefreshToken { get; set; }
}Como para refrescar el token regresamos un nuevo Token, vamos a agregar una función para regresar el token, el cual vamos a utilizarlo para el login y para refrescar el token.
Agregamos una función para validar el Token, para esto en nuestra tabla UsuarioAcceso vamos a buscar el código para refrescar el token. En esta tabla UsuarioAcceso cada vez que un usuario realiza el login vamos a registrar algunos datos como el navegador, sistema operativo y ciudad desde la cual se conecta el usuario, por el momento solo vamos a guardar el token y el código para refrescar el token. Si todo es correcto generamos un nuevo token
Cambiamos nuestra función LoginAsync para guardar los datos del acceso del usuario en el login.
Por último agregamos el servicio para refrescar el token
Puedes probar tus servicios con Postman. Puedes reducir el tiempo de expiración del token a 1 minuto para probar más rápido
Last updated
Was this helpful?