Autenticación de Usuarios en Controladores Rails
Clase 23 de 33 • Curso de Creación de APIs con Ruby on Rails
Contenido del curso
- 3

Creación de APIs con Rails: Proyecto Blog API paso a paso
04:37 - 4

Configuración de Gemas para Pruebas en Proyectos Rails
06:26 - 5

Configuración de Gemas en Proyectos Rails: Arspec, Factory Bot y Database Cleaner
07:25 - 6

Implementación de un Health Check Endpoint en API con RSpec
12:28 - 7

Diseño de Casos de Uso y Diagramas de Entidad para Aplicaciones
03:16 - 8

Diagrama de Entidad Relación para Modelos de Aplicación
01:41 - 9

Modelado de Aplicaciones con TDD en Rails
05:59 - 10

Validaciones y Pruebas TDD en Rails: Modelos USR y Post
07:07 - 11

Implementación de Endpoints para Listar y Mostrar Posts con TDD
15:12 - 12

Implementación de Pruebas y Controladores en Rails
10:34 - 13

Creación y Actualización de Posts con Pruebas TDD
10:12 - 14

Implementación de Métodos y Manejo de Excepciones en Rails API
10:23 - 15

Serialización de Modelos en Rails con ActiveModelSerializer
06:03 - 16

Búsqueda y Filtrado de Posts por Título con TDD
05:57 - 17

Implementación de Búsqueda de Posts con Servicios en Rails
06:06 - 18

Problema N+1 en Rails: Detección y Solución Eficaz
04:40 - 19

Identificación y solución del problema N+1 en Rails
06:20 - 20

Flujo de Autenticación en APIs con Tokens y Proveedores
05:29 - 21

Pruebas de Autenticación en API con Test Driven Development
12:17 - 22

Autenticación con Tokens: Implementación en Rails API
05:54 - 23

Autenticación de Usuarios en Controladores Rails
09:20 - 24

Autenticación y Seguridad en CRUD de Posts en Rails
09:17 - 25

Pruebas de Creación y Actualización con Autenticación en Rails
14:21 - 26

Pruebas de API con Postman: Ejecución y Verificación de Respuestas
10:43 - 27

Caching en Aplicaciones Web: Funciones y Niveles
07:15 - 28

Aceleración de Búsquedas en Rails con Caching
08:23 - 29

Background Jobs en Rails: Conceptos y Funcionalidades
05:45 - 30

Procesamiento en Background y Envío de Correos con Rails
09:45 - 31

Envío de Correos en Rails con ActionMailer y Background Jobs
11:06 - 32
Autenticación y Autorización con JWT y Auth0 en Aplicaciones Web
03:48
¿Cómo autenticar a un usuario en Ruby on Rails?
En la creación de aplicaciones fluye la necesidad de restringir ciertas acciones a usuarios autenticados, garantizando seguridad y personalización en el acceso a la información. Ruby on Rails ofrece herramientas robustas para implementar autenticación y autorización. Exploramos cómo hacer esto en el contexto de un controlador que gestiona las acciones de crear y actualizar publicaciones.
¿Qué es el Before Action en Rails y cómo se utiliza?
El before_action es una herramienta que proporciona Rails para ejecutar una función específica antes de ciertas acciones de un controlador. Este aspecto es crucial para asegurar que procedimientos como la creación y actualización de publicaciones solo se realicen si el usuario está autenticado.
before_action :authenticate_user!, only: [:create, :update]
En este fragmento, el método authenticate_user! se ejecutará antes de las acciones create y update.
¿Cómo implementar el método authenticate_user!?
Este método es el núcleo de la autenticación. Su implementación se realiza como un método privado en el controlador. La autenticación se basa en el uso del header de autorización del request, verificando que el formato y el token presente en él sean válidos.
-
Leer el Header de Autenticación: Verifica su presencia y que cumpla con el formato esperado, utilizando una expresión regular.
if request.headers['Authorization'] =~ /Bearer (.+)/ token = $1 else render json: { error: 'Unauthorized' }, status: :unauthorized return end -
Verificar el Token: A través del modelo
User, verifica que el token corresponde a un usuario válido.user = User.find_by(auth_token: token) -
Manejo de Usuario: Si el usuario es encontrado, es asignado como usuario actual, accesible en el contexto de la aplicación.
if user Current.user = user else render json: { error: 'Unauthorized' }, status: :unauthorized end
¿Cómo se gestiona el usuario actual con Current Attributes?
Rails 5 introduce Current Attributes, una herramienta para guardar y acceder al contexto de la aplicación en la sesión actual. Implementar esto implica:
- Definir una clase
Current, dentro de la carpeta de modelos, que hereda deActiveSupport::CurrentAttributes.
class Current < ActiveSupport::CurrentAttributes
attribute :user
end
- Asignar el usuario identificado al atributo correspondiente.
Current.user = user
Esta configuración permite que cualquier parte de la aplicación pueda referirse al usuario actual mediante Current.user, simplificando el acceso a información contextual.
¿Por qué usar current_user en lugar de session o cookies?
Utilizar Current ofrece una ventaja significativa: aislamiento de contexto. Permite un manejo más limpio y menos propenso a errores comparado con sesiones o cookies, en especial en aplicaciones que emplean múltiples hilos o procesos. Esta técnica resulta en código más mantenible y seguro, apoyando la integración fluida de la autenticación en aplicaciones Rails.
Al incorporar un flujo de autenticación robusto y mantener el estado del usuario con clases como Current, no solo límite de acceso a funciones específicas, sino que ofrece un sistema escalable que permite a los desarrolladores centrarse en expandir otras funcionalidades de la aplicación, sabiendo que la seguridad está bien gestionada. Si te interesa seguir profundizando en Ruby on Rails y sus herramientas, la práctica constante te hará dominar más allá de los conceptos básicos. ¡Sigue programando!