Saltar al contenido

Autenticación basada en tokens con la API de Ruby on Rails 5

Veamos cómo funciona todo. Inicie la consola de Rails en el directorio raíz de la aplicación:

1rails c

bash

Autenticación basada en tokens con la API de Ruby on Rails 5
Autenticación basada en tokens con la API de Ruby on Rails 5

Crea un usuario e introdúcelo en la consola:

1User.create!(email: $0027[correo electrónico protegido]$0027 , contraseña: $0027123123123$0027 , confirmación de contraseña: $0027123123123$0027)

bash

Para ver cómo funciona la autorización, es necesario que haya un recurso que se tenga que solicitar. Vamos a armar un recurso. En tu terminal, corre:

1rails g scaffold Nombre del artículo:descripción de la cadena:text

bash

Esto creará un recurso llamado Item de arriba a abajo — un modelo, un controlador, rutas y vistas. Migrar la base de datos:

1rails db:migrate

bash

Ahora, inicia el servidor y usa cURL para enviar las credenciales al localhost:3000/autentificar. Así es como debería verse la solicitud:

1$ curl -H "Content-Type: application/json" -X POST -d $0027{"email":"[email protected]", "password": "123123123"}$0027 http://localhost:3000/authenticate

bash

Su ficha será devuelta ahora.

1{"auth_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE0NjA2NTgxODZ9.xsSwcPC22IR71OBv6bU_OGCSyfE89DvEzWfDU0iybMA"}

bash

¡Grandioso! Se ha generado una señal. Comprobemos si el recurso es accesible. Puedes hacerlo haciendo una petición GET al localhost:3000/items:

12$ curl http://localhost:3000/items{"error": "No autorizado"}

bash

El recurso no es accesible porque la ficha no ha sido preparada para los encabezamientos de la solicitud. Copie el token previamente generado y póngalo en el encabezado de la autorización:

12$ curl -H "Autorización: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE0NjA2NTgxODZ9.xsSwcPC22IR71OBv6bU_OGCSyfE89DvEzWfDU0iybMA" http://localhost:3000/items[]

bash

Con la ficha preparada, se devuelve una matriz vacía ([]). Esto es normal… después de añadir cualquier elemento, lo verás devuelto en la solicitud.

¡Impresionante! Todo funciona.

Si te has perdido algo, el proyecto ha sido subido a GitHub. Si tienes alguna pregunta, por favor, no dudes en enviarme un mensaje a Github.