PHP - Cambiar TOKEN cada x tiempo

 
Vista:

Cambiar TOKEN cada x tiempo

Publicado por Jorge (1 intervención) el 23/05/2019 10:41:02
Hola, buenas.

Les presento mi problema:

tengo una pagina, con un login, registro etc, que cuando te registra ingresa tu user y tu password a una Base de Datos, y genera automáticamente un token (que se almacena junto con el user y el password) que necesitas para iniciar sesion.
Ahora, necesito que ese Token se actualice cada x tiempo (cada 10 minutos, cada hora, cada semana, etc) y el usuario debe especificar ese tiempo que quiere.
Estuve leyendo bastante y me encontré con la función setInterval, pero no me queda claro como puedo aplicarlo a mi proyecto. espero que me puedan ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Cambiar TOKEN cada x tiempo

Publicado por xve (6935 intervenciones) el 23/05/2019 15:16:45
Hola Jorge, te comento aquí lo mismo que te comente en el chat...

Lo suyo es utilizar un script que se ejecute cada n tiempo y que vaya actualizando el token del usuario.

Este script lo puedes hacer tanto en PHP, Python, C#, Java, ... cualquier lenguaje que se conecte a tu base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cambiar TOKEN cada x tiempo

Publicado por Mauro (1036 intervenciones) el 24/05/2019 15:15:05
Con la función setInterval (De JavaScript) puedes resolver una parte del problema (La obtención de un nuevo token por parte de un usuario ya logeado).

Se me ocurre que podrías hacer algo como esto:

1. Hacer que el usuario realice un login "normal" y, ante una autenticación exitosa devolver un token (Podrías usar algo como https://www.php.net/manual/es/function.openssl-random-pseudo-bytes.php
2. Almacenar ese token en una tabla en una base de datos junto con:
- Un campo TTL (Time To Live) o un timestamp de cuándo se creó el token
- Un campo "ultima consulta" (timestamp)
- Un campo "valido" (boolean)
3. Poner una tarea programada (cronjob si usas *nix) cada x tiempo que:
- Invalide todos los tokens que hayan sido creados hace + que x tiempo
- Elimine todos los tokens inválidos que no hayan sido consultados en menos de x tiempo
4. Del lado del cliente poner una tarea programada (vía setInterval) que intercambie el token actual (almacenado en una cookie, local storage o algo así) por un nuevo token válido
5. Un servicio web que reciba un token y:
- Si está en la tabla de tokens válidos lo devuelva intacto
- Si está en la tabla de tokens pero es inválido genere uno nuevo
- Si no está en la tabla de tokens cierre la sesión o devuelva un error tipo 403

Seguramente faltan detalles pero creo que la idea general está.

Si quieres ver un ejemplo de este tipo de interacción (setInterval + webservice) consulta aquí
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar