¿Cómo añadir autenticación de usuarios con la gema Devise en Rails?
Integrar un sistema de autenticación de usuarios es fundamental para proteger nuestra aplicación de accesos no autorizados. En el framework Ruby on Rails, la gema Devise es una de las herramientas más populares y robustas para lograrlo. Esta guía te llevará paso a paso en el proceso de implementación.
¿Cómo iniciar la instalación de Devise?
Para comenzar a usar Devise, se debe instalar mediante el archivo Gemfile
. Esta gema ofrece una serie de plugins que configuran un sistema de autenticación robusto y personalizable.
-
Agregar la gema al Gemfile:
gem 'devise'
-
Ejecutar el comando bundle install
: Esto instalará la gema y sus dependencias en tu proyecto Rails.
-
Generar configuraciones iniciales de Devise:
Ejecutar el generador de Devise para añadir todas las configuraciones necesarias:
rails generate devise:install
Esto creará archivos de configuración de inicialización y de internacionalización, los cuales puedes personalizar, por ejemplo, traduciendo los mensajes al español.
¿Cómo se crea un modelo de usuario con Devise?
Con Devise, no es necesario crear un modelo de usuario desde cero. Puedes utilizar su generador para establecer un modelo listo para gestionar sesiones y autenticación.
-
Generar el modelo de usuario:
rails generate devise User
Crear el modelo User
con los siguientes módulos predeterminados:
database_authenticatable
: Autenticación a través de la base de datos.
registerable
: Permite el registro de usuarios.
recoverable
: Gestión de recuperación de contraseñas.
rememberable
: Recordar usuarios a través de cookies.
validatable
: Validación de email y contraseñas.
-
Correr las migraciones:
rails db:migrate
Esto creará la tabla users
en la base de datos con los campos necesarios definidos por Devise.
¿Cómo configurar las rutas de acceso con Devise?
Devise introduce un nuevo concepto de rutas a través del método devise_for
.
-
Configurar las rutas en config/routes.rb
:
devise_for :users
Este método añade todas las rutas necesarias para gestionar la autenticación de usuarios, como el registro, inicio y cierre de sesión.
-
Consultar las rutas: Utiliza rails routes
en la consola para revisar las rutas generadas.
¿Cómo establecer restricciones de acceso en la aplicación?
Para controlar el acceso a las diferentes partes de la aplicación, utilizamos un before_action
en el controlador principal.
-
Modificar el ApplicationController
:
Dentro del archivo app/controllers/application_controller.rb
, añade:
before_action :authenticate_user!
Esto garantiza que solo los usuarios autenticados puedan acceder a las rutas protegidas.
¿Cómo añadir enlaces de inicio y cierre de sesión?
Para mejorar la usabilidad, puedes agregar botones de inicio y cierre de sesión en la vista de la aplicación.
-
Modificar la vista principal (app/views/layouts/application.html.erb
):
<% if user_signed_in? %>
<%= link_to 'Cerrar sesión', destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to 'Iniciar sesión', new_user_session_path %>
<% end %>
El método link_to
es un helper que facilita la creación de enlaces. Aquí usamos rutas proporcionadas por Devise para gestionar sesiones.
Para terminar, siempre reinicia el servidor cada vez que instales una nueva gema para asegurarte de que los cambios se apliquen correctamente. Adoptar Devise mejora la seguridad de tu aplicación, protegiéndola contra accesos no autorizados y ofreciendo una experiencia de usuario coherente y segura. ¡Sigue explorando las capacidades de Devise para mejorar y personalizar aún más tu sistema de autenticación!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?