Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Login con Token Header en lugar de Variables de sesión

Estas en el tema de Login con Token Header en lugar de Variables de sesión en el foro de Symfony en Foros del Web. Buenos días. Empiezo a trabajar con Symfony y tengo dudas. Es más, soy consciente de que estoy obsoleto y quiero ponerme al día. Tengo que ...
  #1 (permalink)  
Antiguo 14/04/2016, 04:18
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta Login con Token Header en lugar de Variables de sesión

Buenos días.
Empiezo a trabajar con Symfony y tengo dudas. Es más, soy consciente de que estoy obsoleto y quiero ponerme al día.

Tengo que hacer un login en una aplicación y hasta ahora estaba acostumbrado a usar la típica variable de sesión o las típicas cookies.

Sin embargo, me han dicho que debo usar un token header que se genere por usuario.

No se cómo enfocarlo exactamente o por donde empezar.

¿Alguien puede echar una mano por favor.

Muchas gracias.
Un saludo
  #2 (permalink)  
Antiguo 14/04/2016, 11:24
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Login con Token Header en lugar de Variables de sesión

creo que esto es lo que andas buscando: http://symfony.com/doc/2.8/cookbook/...ntication.html
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 25/04/2016, 02:36
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Login con Token Header en lugar de Variables de sesión

Primero de todo muchas gracias hhs.

Siento haber tardado en responder pero es que me estoy centrando todavía e intentando aclarar con lo que tengo que hacer.

Por lo visto, están desarrollando una app móvil que tiene que llamar a una API REST que estoy haciendo yo. La idea es que les tengo que facilitar unas urls y ellos llamarán a estas y con un GET o un POST y con unos encabezados.

De momento me estoy haciendo con las GET. El problema es que las POST no las he acabado de entender del todo de momento.

He empezado a usar el FOSRestBundle y me está yendo muy bien, me ayuda mucho.

Pero el problema que tengo ahora creo que es de conceptos.

Por ejemplo, respecto al login, ellos llamarán a una url en la que pasan un usuario y su password. Esto lo harán por POST.

Entiendo que en este momento, yo tendré que buscar en la base de datos dicho usuario y contraseña y si existe, retornar una url de acceso al recurso y un TOKEN.

Dicho Token lo irán enviando en los encabezados de las diferentes llamadas para identificar al usuario con el que estamos trabajando.

Esta es la teoría, y creo que la entiendo.

La práctica es donde me surgen dudas:
1. Dicho Token, deberá estar en la tabla de usuarios imagino ¿no?
2. ¿Será siempre el mismo? ¿O genero uno cada vez que hagan login?
3. ¿Cómo genero el Token?
4. Cuando llamen a la url de login por POST ¿Cómo devuelvo el token? Quiero decir, que entiendo que la url de respuesta que mandaré será algo del tipo: http://url.com/usuario/1, pero ¿y el token? ¿lo envío como una respuesta normal como cuando se envían los resultados de un GET?

Se que son muchas dudas y cualquier aporte será muy bienvenido.

Muchas gracias por todo y que tengáis un lunes genial.
Un saludo.
  #4 (permalink)  
Antiguo 25/04/2016, 03:35
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Login con Token Header en lugar de Variables de sesión

Me autorespondo pero aún así, sigo más liado todavía.

Según lo que he estado buscando por ahí, el token se genera a cada login y se guarda en el lado del cliente. He estado leyendo cosas respecto a JSON Web Tokens. Pero todo esto hace que todavía esté más liado, ya que estoy demasiado acostumbrado al antiguo sistema de guardar las cosas en base de datos :_(

El problema que tengo a raíz de esto es que no se cómo gestionarlo, y menos con Symfony2, que soy un completo novato.

Otra duda enorme. Entiendo que al hacer login se genera el token. Pero ¿cómo se sabe si el token es correcto al cambiar de página?
¿Almacenándolo en una base de datos y comparándolo?

Y de aquí me surge otra gran duda ¿qué se supone que tiene que hacer el logout en este sistema????

Cualquier ayuda será bienvenida.

Un saludo.

Última edición por hamramr; 25/04/2016 a las 04:30
  #5 (permalink)  
Antiguo 26/04/2016, 03:05
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Login con Token Header en lugar de Variables de sesión

Vuelvo a autoresponderme por si a alguien le puede servir de ayuda en el futuro.

Al final he encontrado un Bundle muy sencillo pero muy práctico para generar Jason Web Tokens (https://github.com/firebase/php-jwt).

Y he decidido afrontarlo así:
Al hacer login, si el usuario es correcto genero el token y lo devuelvo con los encabezados.
Almaceno dicho token y el id de usuario en una tabla, junto a la fecha de creación y de caducidad. Si ya existía el usuario, actualizo el token.

Al solicitar otros recursos, como por ejemplo los datos de un usuario, comparo el token que me mandan por el encabezado con el que tengo guardado en la bdd, si es correcto le muestro los datos.

Y el logout será simplemente borrar este token.

No se si será la respuesta más correcta, pero es la que se me ha ocurrido.

Gracias!

Etiquetas: login, token
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:37.